ASP Net Identity JWT API令牌的有效负载要求是什么



我有一个ASP.NET Web Api,它使用ASP.NET Identity来管理用户和角色对Api的访问。我有一个案例,我试图创建一个JWT令牌,这样外部公司就可以到达我的一个端点。我一直在尝试使用SO文章中显示的代码创建我自己的JWT——第二个答案。我的JWT令牌正在正确解码,但不允许访问我的端点,即使我分配了正确的角色。我想知道负载中是否需要其他信息,因为系统基于ASP.NET Identity。

这是我在JWT 中包含的有效载荷

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

以下是我在创建JWT时遗漏的一些有效载荷,它们包含在ASP.NET Identity生成的JWT令牌中。我想知道它们是否是必不可少的,因此必须包含在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令牌时忽略了这些值,因为我没有将访问权限绑定到特定帐户。我只是想创建一个持久的令牌,外部公司可以在不需要登录的情况下使用

我找到了这个问题的答案,所以我想把它发布在这里。您不需要额外的有效负载对象。原来我遇到的问题是iss:有效载荷。我已经将其设置为生产环境,但正在本地进行测试。一旦我更改了iss: http://localhost:12345,即使用户不在我的ASP.NET标识系统中,我也可以访问端点。

所以只是为了确认。。我所需要的只是我的有效载荷中的以下数据

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

相关内容

最新更新