Asp.net 使用JWTBeareAuthenticationOptions时未授权Web API
我已经从一个演练中学习了第2部分,该部分介绍了如何使用jwt进行授权,以便我可以从我的客户机获得一个访问令牌,并授权他们使用api。然而,我似乎无法让这个工作。我不断收到邮递员发来的401信息,并附上:Asp.net 使用JWTBeareAuthenticationOptions时未授权Web API,asp.net,asp.net-web-api,owin,jwt,owin-security,Asp.net,Asp.net Web Api,Owin,Jwt,Owin Security,我已经从一个演练中学习了第2部分,该部分介绍了如何使用jwt进行授权,以便我可以从我的客户机获得一个访问令牌,并授权他们使用api。然而,我似乎无法让这个工作。我不断收到邮递员发来的401信息,并附上: { "Message": "Authorization has been denied for this request." } 教程链接: 访问令牌来自我用Java创建的授权服务,因此本教程的第一部分不适用于我 JWT { "exp": 1489641048, "user_nam
{
"Message": "Authorization has been denied for this request."
}
教程链接:
访问令牌来自我用Java创建的授权服务,因此本教程的第一部分不适用于我
JWT
{
"exp": 1489641048,
"user_name": "testuser",
"authorities": [
"USER"
],
"jti": "2dde11c3-2f06-496c-9b36-4dbf71cdc2e2",
"client_id": "webreport_service",
"scope": [
"USER"
]
}
Web API代码片段
public void ConfigureOAuth(IAppBuilder app)
{
var audience = "webreport_service";
// Api controllers with an [Authorize] attribute will be validated with JWT
app.UseJwtBearerAuthentication(
new JwtBearerAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
AllowedAudiences = new[] { audience },
IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[]
{
new SymmetricKeyIssuerSecurityTokenProvider("Any", "abc123")
}
});
}
它与第2节中的链接略有不同,但这是因为我没有对我的秘密进行base64编码,也没有将发布者放入jwt中
邮递员
GET /api/protected HTTP/1.1
Host: localhost:54706
Authenticate: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0ODk2NDEyOTAsInVzZXJfbmFtZSI6InRlc3R1c2VyIiwiYXV0aG9yaXRpZXMiOlsiVVNFUiJdLCJqdGkiOiJlMDNkNWZmZC1hZWI4LTRkODctOGQ3My0zNjhjYjQ2ZDg2OWUiLCJjbGllbnRfaWQiOiJ3ZWJyZXBvcnRfc2VydmljZSIsInNjb3BlIjpbIlVTRVIiXX0.C4hivwA1VF-0GO0xCVUoDIheWQWlAcVWvAzChZTgrHY
Cache-Control: no-cache
Postman-Token: ff628109-d5f4-76e0-41c2-e0c7d377b93f
任何帮助都将不胜感激
谢谢 我想是的,请检查以下内容: 首先: 检查您的机密base64代码。”abc123'是真的吗? 我正在jwt.io网站上查看您的令牌,查看您的密码。 但签名无效 其次: 检查您的有效载荷值。 你的jwt有效载荷是什么您的发卡机构验证设置为“任意” 你的jwt有效载荷是多少您的受众验证集“webreport\u服务” 想想看 致意