IDX10501:签名验证失败。 kid:“ [PII隐藏]”,令牌:“ [PII隐藏]”-Azure B2C

时间:2019-04-25 14:09:17

标签: c# .net-core jwt azure-ad-b2c

我创建了一个示例应用程序,用户可以在其中使用Azure B2C进行身份验证,该程序可以正常运行。我取回令牌和AuthenticationResult。都可以。但是我想从令牌取回ClaimPrincipal。为此,我已将System.IdentityModel.Tokens.Jwt(5.4.0)nuget包添加到项目中。

我尝试使用以下代码来实现:

string Token = "eyJ0eXAiOiJKV1QiLCJhbGciO*****"; //long token
JwtSecurityTokenHandler jwt = new JwtSecurityTokenHandler();

var validateParams = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
        {
          ValidIssuer = Authority, //https://login.microsoftonline.com/tfp/MYTEANANTNAME.onmicrosoft.com/MYPOLICYNAME/v2.0/" 
          ValidAudience = clientId,  //CLIENTID: Like: b430xxxx-xxxx-xxxx-xxxx-f5c33cxxxxxx
          ValidateAudience = true,
          ValidateLifetime = true,
          ValidateIssuer = true,
        };

SecurityToken secToken;
var claimPrincipal = jwt.ValidateToken(Token, validateParams , out secToken);

但是在所有情况下,点击ValidateToken都会引发以下异常:

IDX10501: Signature validation failed. Unable to match keys: 
kid: '[PII is hidden]', 
token: '[PII is hidden]'.

您对我应该如何解决此问题有任何建议?

在这种情况下,该应用程序是.net核心控制台应用程序,但最终此代码将在WPF应用程序中。

1 个答案:

答案 0 :(得分:0)

设置以下标志可以得到更详细的错误。这将用实际的错误替换[PII隐藏](又名:个人身份信息)。

IdentityModelEventSource.ShowPII = true;