2017-01-16 9 views
0

У меня есть ASP.NET Web Api, который использует ASP.NET Identity для управления доступом пользователей и ролей к API. У меня есть случай, когда я пытаюсь создать токен JWT, чтобы внешняя компания могла достичь одной из моих конечных точек. Я пытался создать свой собственный JWT, используя код, показанный в this SO article - Second answer. Мой токен JWT правильно декодирует, но не разрешает доступ к моей конечной точке, даже если у меня назначена надлежащая роль. Мне интересно, нужна ли другая информация в полезной нагрузке, потому что система основана на идентификаторе ASP.NET.Каковы требования к полезной нагрузке для токенов API Net Identity JWT API

Вот полезная нагрузка , что я включил в моем JWT

{ 
    iss: "http://mycompany.com", 
    name: "Company Test", 
    role: "CompanyTest", 
    aud: "<Audience ID of my application>", 
    exp: 1485433642 
} 

Вот несколько полезных нагрузок, которые я ушел из моего творчества JWT, которые включены в JWT лексемы генерируется ASP.NET идентичности , Мне интересно, являются ли они существенными и поэтому должны быть включены в полезную нагрузку JWT.

{ 
    "nameid": "<user unique identifier here from Identity table>", 
    "unique_name": "<Email account of user>", 
    "http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider": "ASP.NET Identity", 
    "AspNet.Identity.SecurityStamp": "<Security stamp column from Identity table>" 
} 

Я оставил эти значения, когда пытаются создать свой собственный маркер JWT, потому что я не связывал доступ к конкретной учетной записи. Я просто хотел создать долговременный токен, который внешняя компания могла бы использовать без участия.

+0

Хотя вы можете декодировать JWT вам все еще нужно, чтобы применить тождество к контексту запроса. это то, что библиотеки делают для вас. После того, как вы расшифруете извлечение маркера, вам нужна информация, создайте личность и примените претензии и назначьте принцип текущему потоку. Вы можете абстрагировать все эти функции в фильтре действий. – Nkosi

+0

. Все, чего я пытаюсь избежать, - заставить внешнюю компанию проверять с помощью имени пользователя и пароля, который является нормальным потоком моего доступа к API. Я полагаю, что я мог бы создать учетную запись и зарегистрировать учетную запись компании с учетными данными и изменить истечение срока действия JWT, а затем уйти в отставку с помощью моего секретного ключа. – webworm

+0

Как они получают токен – Nkosi

ответ

0

Я понял ответ на вопрос, поэтому решил, что отправлю его здесь. Вам не нужен дополнительный объект полезной нагрузки. Оказывается, проблема, с которой я столкнулся, была полезной нагрузкой iss:. Я установил его в производственную среду, но тестировал локально. Как только я изменил iss: http://localhost:12345, я смог получить доступ к конечной точке, даже если пользователь не был в моей системе идентификации ASP.NET.

Так просто, чтобы подтвердить .. все, что мне было нужно, следующие данные в моей полезной нагрузки

{ 
    iss: "http://localhost:12345", 
    name: "Company Test", 
    role: "CompanyTest", 
    aud: "<Audience ID of my application>", 
    exp: 1485433642 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^