我遇到了一些麻烦手动验证Identity Server 4 颁发的 JWT 令牌。使用
客户端 ID:“CLIENT1”
客户端密码:“123456”
我不断收到的异常是:IDX10501:签名验证失败。无法匹配密钥:'[PII 默认情况下是隐藏的。将 IdentityModelEventSource.cs 中的“ShowPII”标志设置为 true 以显示它。]'
有谁能告诉我我哪里出错了。
private static void ValidateJwt(string jwt, DiscoveryResponse disco)
{
var parameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
ValidIssuer = disco.Issuer,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("123456")),
ValidAudience = "CLIENT1",
//IssuerSigningKeys = keys,
// ValidateAudience = true,
// ValidateLifetime = true,
};
SecurityToken validatedToken;
var handler = new JwtSecurityTokenHandler();
handler.InboundClaimTypeMap.Clear();
try
{
var user = handler.ValidateToken(jwt, parameters, out validatedToken);
}
catch(Exception ex)
{
var error = ex.Message;
}
}
查看ValidateJwt()
在此示例中:
https://github.com/IdentityServer/IdentityServer4/blob/master/samples/Clients/old/MvcManual/Controllers/HomeController.cs
您缺少的部分是从发现文档加载公钥。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)