【发布时间】:2019-09-15 00:07:33
【问题描述】:
我创建了一个示例应用程序,用户可以在其中使用 Azure B2C 进行身份验证,效果很好。我取回了 Token 和 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 应用程序中。
【问题讨论】:
-
您的权限可能有误。检查你的提琴手看看。 stackoverflow.com/questions/43276977/…
标签: c# .net-core jwt azure-ad-b2c