我有一个ASP.NET Web,它使用ASP.NET标识来管理用户和角色对API的访问。在我的例子中,我试图创建一个JWT令牌,以便外部公司能够到达我的一个端点。我一直试图使用this SO article - Second answer中显示的代码来创建自己的JWT。我的JWT令牌正在正确解码,但不允许访问我的端点,即使我指定了正确的角色。我想知道在有效负载中是否还需要其他信息,因为系统是基于ASP.NET标识的。
以下是我在JWT中包含的有效载荷()
{
iss: "http://mycompany.com",
name: "Company Test",
role: "CompanyTest",
aud: "<Audience ID of my application>",
exp: 1485433642
}下面是一些遗漏了创建的有效负载,这些负载包含在由ASP.NET标识生成的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令牌时,我忽略了这些值,因为I没有将访问绑定到特定帐户。我只是想创建一个长期的令牌,外部公司可以使用,而不必登录。
发布于 2017-01-16 18:30:51
我想出了这个问题的答案,所以我想我应该把它发到这里。您不需要额外的有效载荷对象。原来我遇到的问题是iss:的有效载荷。我已经将它设置为一个生产环境,但正在本地进行测试。一旦我更改了iss: http://localhost:12345,我就能够访问端点,即使用户不在我的ASP.NET标识系统中。
所以我想确认一下..。我所需要的只是负载中的以下数据
{
iss: "http://localhost:12345",
name: "Company Test",
role: "CompanyTest",
aud: "<Audience ID of my application>",
exp: 1485433642
}https://stackoverflow.com/questions/41682453
复制相似问题