【发布时间】:2017-01-22 16:41:40
【问题描述】:
我如何(可以?)使用 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',SecurityKey:'Microsoft.IdentityModel.Tokens.X509SecurityKey' 不支持。 在 Microsoft.IdentityModel.Tokens.CryptoProviderFactory.CreateProvider(SecurityKey 密钥,字符串算法,布尔 willCreateSignatures) 在 Microsoft.IdentityModel.Tokens.CryptoProviderFactory.CreateForSigning(SecurityKey 密钥,字符串算法)
我尝试了一些算法,但它似乎不适用于其中任何一种?
【问题讨论】:
-
查看类似问题github.com/IdentityServer/IdentityServer4/issues/61似乎是签名算法的问题。
标签: c# asp.net-core jwt