我最近开始将.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服务(使用外部身份验证服务器)验证承载令牌?还是我配置不正确?