我如何(可以?)使用 X509SecurityKey 进行 Asp.Net Core JWT 验证?
我当前的代码大致是:
X509SecurityKey signingKey = null;
using (X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine))
{
store.Open(OpenFlags.ReadOnly);
var v = store.Certificates.Find(X509FindType.FindByTimeValid, DateTime.Now, true);
var v1 = v.Find(X509FindType.FindBySubjectDistinguishedName, strCertName, true);
signingKey = new X509SecurityKey(v1[0]);
}
然后是签名凭证......
new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256)
这会导致异常:
签名算法:“HS256”,安全密钥:“Microsoft.IdentityModel.Tokens.X509SecurityKey”
不支持。
在 Microsoft.IdentityModel.Tokens.CryptoProviderFactory.CreateProvider(SecurityKey 密钥、字符串算法、布尔 willCreateSignatures)
在 Microsoft.IdentityModel.Tokens.CryptoProviderFactory.CreateForSigning(SecurityKey 密钥,字符串算法)
我尝试了一些算法,但似乎其中任何一个都不起作用?
我尝试了一些算法,但似乎其中任何一个都不起作用?
您尝试将非对称密钥(嵌入 X.509 证书中)与 HMAC 算法(我们经常使用该算法)结合使用辱骂地称为“对称签名算法”):这是行不通的。
假设您的证书是 RSA 证书,您应该能够使用SecurityAlgorithms.RsaSha256
.
var credentials = new SigningCredentials(signingKey, SecurityAlgorithms.RsaSha256)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)