Каковы требования к полезной нагрузке для asp Net Identity JWT API токенов

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

Вот полезная нагрузка, которую я включил в свой 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, потому что я не связывал доступ к определенной учетной записи. Я просто хотел создать долговечный токен, который внешняя компания могла бы использовать без необходимости входа в систему.

1 ответ

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

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

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