- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用下面的代码验证有效的 JWT,但遇到一个奇怪的错误
"IDX10501: Signature validation failed. Unable to match key:
kid: 'System.String'.
Exceptions caught:
'System.Text.StringBuilder'.
token: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'."
这是我的验证方法
ClaimsPrincipal principal = null;
var token = "JWT GOES HERE"
try
{
string sec = "000uVmTXj5EzRjlnqruWF78JQZMT";
var securityKey = new SymmetricSecurityKey(System.Text.Encoding.Default.GetBytes(sec));
var now = DateTime.UtcNow;
SecurityToken securityToken;
string tokenIssuer = "https://MyIssuer.com";
TokenValidationParameters validationParameters = new TokenValidationParameters()
{
ValidIssuer = tokenIssuer,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
IssuerSigningKey = securityKey
};
JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
principal = handler.ValidateToken(token, validationParameters, out securityToken); <---Errors here
}
这是我的 JWT 的值(value)。我正在使用正确的发行人
{
"alg": "RS256",
"kid": "dev",
"x5t": "Sm7aAUSt4Fdv7X1b9jQDf8XwbvQ",
"pi.atm": "xxe8"
}.{
"scope": [],
"client_id": "ClientABC",
"iss": "https://MyIssuer.com",
"jti": "1JLDz",
"sub": "ClientABC",
"exp": 1601609852
}.[Signature]
我在这里缺少什么? SymmetricSecurityKey 是因为这个算法是 RS256 吗?我在 TokenValidationParameter 中遗漏了什么吗?
IDX10501: Signature validation failed. Unable to match key:
kid: 'dev'.
Exceptions caught:
'System.NotSupportedException: IDX10634: Unable to create the SignatureProvider.
Algorithm: 'RS256', SecurityKey: 'Microsoft.IdentityModel.Tokens.SymmetricSecurityKey, KeyId: '', InternalId: 'TdfWgWjCVeM60F3C5TOogJuka1aR5FA_xchwhY9MHH4'.'
is not supported. The list of supported algorithms is available here: https://aka.ms/IdentityModel/supported-algorithms
at Microsoft.IdentityModel.Tokens.CryptoProviderFactory.CreateSignatureProvider(SecurityKey key, String algorithm, Boolean willCreateSignatures, Boolean cacheProvider)
最佳答案
尝试使用 SecurityAlgorithms.HmacSha256
发出 token 时的示例:
Users user = _context.Users.FirstOrDefault(c => c.UserName == userName && c.Password == password);
if(user == null)
{
return Unauthorized();
}
Claim[] claims = new Claim[]
{
new Claim("Id", user.Id.ToString()),
new Claim("Name", user.Name),
new Claim("Email", user.Email),
};
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("000uVmTXj5EzRjlnqruWF78JQZMT"));
var signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
var token = new
JwtSecurityToken(
"MyProject",
"MyClient",
claims,
expires: DateTime.Now.AddMinutes(30),
signingCredentials: signingCredentials);
return Ok(new JwtSecurityTokenHandler().WriteToken(token));
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.SaveToken = true;
options.TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = true,
ValidateAudience = true,
ValidAudience = "MyClient",
ValidIssuer = "MyProject",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("000uVmTXj5EzRjlnqruWF78JQZMT"))
};
});
app.UseAuthentication();
app.UseAuthorization();
关于c# - 验证 JWT 出现奇怪的 “Unable to match key kid” 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61761730/
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我将 identityserver4 用于 SSO 问题是每当我重新启动 identityserver 客户端应用程序时第一次获取异常异常消息是 An unhandled exception has
为一张微笑并坐在花园里的 child 的照片写 ALT 文本哪个好? 这 alt="Photo of smiling kid sitting in the garden" 或这个 alt="Photo
我需要帮助来理解如何解决以下问题: Professor Adam has two children who, unfortunately, dislike each other. The proble
我在从 angular js 2 调用端点到 widlfly 服务器时收到此异常“没有找到 child 的 publicKey”。 身份验证发生在 keycloak 中,但是我在同一领域内使用相同的
我正在为我的妻子开发一个联系人管理器作为学习 Silverlight 4 的有趣练习。它将跟踪人们的地址、电话号码、电子邮件、特殊场合(生日、周年纪念等) 在设计数据库的过程中,我遇到了一个小障碍。她
题目地址:https://leetcode-cn.com/problems/kids-with-the-greatest-number-of-candies/ 题目描述 给你一个数组 candie
我生成了一个 JWT 并且有一些我很理解的声明,但是有一个声明叫做 kid在标题中。有谁知道这是什么意思? 我使用 auth0.com 生成了 token 最佳答案 kid是一个可选的 header
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
所以我正在为我运行的 Jabber 机器人使用 node-xmpp-client 。我想要做的是获取群聊中用户的实际 JID,而不是别名。所以使用类似这样的代码: client.on('stanza'
我正在尝试使用 SpringBoot 实现 Oauth2 授权服务器 guide作为引用。 我的 keystore 只有一个 key 。我已经成功创建了一个 JWToken(我可以在 jwt.io 上
这是我的 cURL 请求 curl https://geocode.search.hereapi.com/v1/geocode?q=5%20Rue%20Daunou%2C%2075000%20Pari
FundingRank 和 SourceBucket 是枚举,但本质上是 int enum FundingRank { LESS_THAN_0(0), LESS_THAN_1(1),
我想生成一个带有“kid” header 声明的 JWT token 。我有一个 XML 格式的 RSA 私钥来签署 JWT token 。但是在我的 JWT 中,我找不到“kid” header 声
我正在使用 Keycloak 来保护我的 rest api 我在 Keycloak 中有 2 个客户端: -我的前端:React 应用 -我的后端:Spring boot(bearer only ty
我正在尝试使用下面的代码验证有效的 JWT,但遇到一个奇怪的错误 "IDX10501: Signature validation failed. Unable to match key: kid: '
我正在使用带有 openiddict 的 asp.net core,为了授权我正在使用 jwtmiddleware app.UseJwtBearerAuthentication(new JwtBea
我在使用 passport-azure-ad 库时遇到问题,该库在尝试验证 id_token 时抛出错误。具体的错误信息是“authentication failed due to: In _vali
按照文档 here和 there ,我设法设置了一个授权服务器,它发出用非对称 key 签名的 JWT 访问 token ,资源服务器使用公钥的本地副本在本地验证这些 token 。到目前为止一切顺利
我正在尝试验证和解码前端发送的 id token 。 运行验证函数时出现此错误。 有时它可能会起作用。 No pem found for envelope: {"alg":"RS256","kid":
我是一名优秀的程序员,十分优秀!