WebApi调用始终未授权
问题描述:
我正在对我的Asp .Net WebApi实施访问令牌验证,但尽管我试图禁用任何类型的检查,但我总是得到401 Unauthorized
。 我只是添加下面的代码和Authorize
属性控制器:WebApi调用始终未授权
public class Startup
{
public void Configuration(IAppBuilder app)
{
TokenValidationParameters validationParameters =
new TokenValidationParameters
{
ValidateIssuer = false,
ValidateIssuerSigningKey = false,
RequireSignedTokens = false,
RequireExpirationTime = false,
ValidateAudience = false,
ValidateLifetime = false,
ValidateActor = false
};
app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions()
{
TokenValidationParameters = validationParameters
});
}
}
此外,这是在Global.asax
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
我相信,令牌我使用的作品,因为如果我使用ADFS验证而不是此手动验证,则流程正常工作。
UPDATE 启用调试信息我注意到我收到以下错误。
Microsoft.Owin.Security.OAuth.OAuthBearerAuthenticationMiddleware错误:0:验证失败 System.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException:IDX10500:签名验证失败。无法解析SecurityKeyIdentifier:“SecurityKeyIdentifier ( IsReadOnly =假, 计数= 1, 第[0] = X509ThumbprintKeyIdentifierClause(散列= 0x84371F65121DD3A5362C77EF61C5CC4EE5AD3807) )
答
首先我添加诊断上Owin
<system.diagnostics>
<switches>
<add name="Microsoft.Owin" value="Verbose" />
</switches>
然后我在TokenValidationParameters
中加入了IssuerSigningToken
,因为中间件试图验证令牌。 感谢这个回答https://stackoverflow.com/a/35835672/2297037,我发现这个解决方案。