IDX10501:签名验证失败。无法匹配密钥

问题描述 投票:2回答:1

我有一个使用来自外部应用程序的ADFS令牌对API进行身份验证的任务,因此我创建了两个应用程序,一个是MVC应用程序,比如说A,它使用SSO凭据进行身份验证,另一个是WEB API应用程序让我们说B,所以在这里从A开始,我正在使用A的ADFS令牌调用B的API,但是我遇到了错误。有人帮我解决这个问题吗?

下面是应用程序B中WEB API中的代码”

           ConfigurationManager<OpenIdConnectConfiguration> configManager =
                new ConfigurationManager<OpenIdConnectConfiguration>(openIdConfig, new 
                                                                     OpenIdConnectConfigurationRetriever());

            OpenIdConnectConfiguration config = 
            configManager.GetConfigurationAsync().GetAwaiter().GetResult();
            result.EmailId = Claims.FirstOrDefault(claim => claim.Type == "upn").Value;
            result.WindowsNTId = Claims.FirstOrDefault(claim => claim.Type == "unique_name").Value;
            var utc0 = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
            result.TokenCreatedOn = utc0.AddSeconds(Convert.ToInt64((Claims.FirstOrDefault(claim => 
            claim.Type == "iat").Value)));
            result.TokenExpiresOn = utc0.AddSeconds(Convert.ToInt64((Claims.FirstOrDefault(claim => 
            claim.Type == "exp").Value)));

            // Use System.IdentityModel.Tokens.Jwt library to validate the token
            JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();

            var tokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                ValidateIssuer = true,
                ValidIssuer = config.Issuer,
                IssuerSigningKeys = config.SigningKeys,
                ValidateAudience = true,
                ValidAudience = expectedAudience
            };

            SecurityToken validatedToken;

            try
            {
                var claimsPrincipal = tokenHandler.ValidateToken(RawData, tokenValidationParameters, 
                out validatedToken);

            }
            catch (Exception ex)
            {

            }

下面是异常消息。

    IDX10501: Signature validation failed. Unable to match key: 
    kid: 'System.String'.
    Exceptions caught:System.Text.StringBuilder'. 
    token: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'.  

我有一个使用来自外部应用程序的ADFS令牌对API进行身份验证的任务,因此我创建了两个应用程序,一个是MVC应用程序,比如说A,它与SSO一起使用进行了身份验证...

oauth-2.0 jwt azure-active-directory openid-connect adfs
1个回答
0
投票
实际上,此错误表示:密钥正常,一个密钥匹配,但是签名验证失败。
© www.soinside.com 2019 - 2024. All rights reserved.