无法使用UseJwtBearerAuthentication访问旧版WebApI:SecurityTokenSignatureKeyNotFoundException

时间:2019-03-01 20:26:01

标签: asp.net-web-api identityserver4 openid-connect identityserver3 bearer-token

我最近开始将.NET Framework解决方案迁移到.NET Core,现在涉及将Identity Server 4与外部身份验证提供程序一起使用。我仍然需要使用idp发出的承载令牌访问我的整体中的旧版Web API。

我将启动配置如下:

app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions
{
            AuthenticationMode = AuthenticationMode.Active,
            TokenValidationParameters = new TokenValidationParameters()
            {
                ValidAudience = "MyApi",
                ValidIssuer = identityServer,
            }
}

但是尝试访问受保护的旧版api时出现以下错误:

  

Microsoft.Owin.Security.OAuth.OAuthBearerAuthenticationMiddleware   错误:0:身份验证失败   Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException:   IDX10501:签名验证失败。无法匹配密钥:孩子:   '[[PII隐藏]],令牌:'[[PII隐藏]]。在

     

System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(String   令牌,TokenValidationParametersvalidationParameters)位于   System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(字符串   令牌,TokenValidationParametersvalidationParameters,SecurityToken&   validatedToken)   Microsoft.Owin.Security.Jwt.JwtFormat.Unprotect(String protectedText)   在   Microsoft.Owin.Security.OAuth.OAuthBearerAuthenticationHandler.d__3.MoveNext()

当前我无法使用UseIdentityServerBearerTokenAuthentication,因为它依赖于IdentityServer3.AccessTokenValidation,而后者又依赖于IdenityMonitor> 2.0,而我目前正在使用4.0,并且无法将其降到2.0。

我想知道是否仍然可以使用UseJwtBearerAuthentication从我的.NET Framework应用程序中的IdS4服务(使用外部身份验证服务器)验证承载令牌?还是我配置不正确?

0 个答案:

没有答案