我已经实现了正常的登录行为,即在成功登录后发出JWT令牌。然后,API(ASP.Net)应该使用[Authorize]
属性来限制对某些Controller动作的访问-但是我继续得到:
401-未经授权的响应(“此请求的授权已被拒绝。”)
我相对确定我没有正确配置JWT令牌认证-但是我在启动时使用了Microsoft.Owin.Host.SystemWeb
:
public void Configuration(IAppBuilder app) {
ConfigureOAuthTokenConsumption(app);
}
private void ConfigureOAuthTokenConsumption(IAppBuilder app) {
app.UseJwtBearerAuthentication(
new JwtBearerAuthenticationOptions {
AllowedAudiences = new string[] { "*" },
TokenValidationParameters = new TokenValidationParameters {
ValidateIssuer = true,
ValidIssuer = "SomeValidIssuer",
ValidateAudience = true,
ValidAudience = "SomeValidAudience",
ValidateLifetime = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("mysupersecretkey"))
}
}
);
}
通过标头将非常简单的令牌传递给请求:
授权:承载eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MzM1NzY5MDEsImlzcyI6IlNvbWVWYWxpZElzc3VlciIsImF1ZCI6IlNvbWVWYWxpZEF1ZGllbmNlIn0.YfgbVuLgjTagkZTHwXRh9gQxOq5boeMa7TOgq0keKc0
您可以使用this网站查看令牌的内容
在保护您的ASP.NET Core 2.0 API的安全性方面,我一直遵循this的出色链接,但我目前正在从事的项目无法选择dotNetCore,但是我遵循了类似的方法发行令牌的路径。
我在做错什么,为什么我的请求中得到401?