【问题标题】:How can I use X509SecurityKey for Asp.Net Core JWT validation?如何使用 X509SecurityKey 进行 Asp.Net Core JWT 验证?
【发布时间】: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 密钥,字符串算法)

我尝试了一些算法,但它似乎不适用于其中任何一种?

【问题讨论】:

标签: c# asp.net-core jwt


【解决方案1】:

我尝试了一些算法,但它似乎不适用于其中任何一种?

您正在尝试将非对称密钥(嵌入在 X.509 证书中)与 HMAC 算法(我们经常滥用称为“对称签名算法”)一起使用:这是行不通的。

假设您的证书是 RSA 证书,您应该可以使用SecurityAlgorithms.RsaSha256

var credentials = new SigningCredentials(signingKey, SecurityAlgorithms.RsaSha256)

【讨论】:

猜你喜欢
  • 2019-10-30
  • 2017-12-02
  • 2018-05-23
  • 2022-01-23
  • 2020-08-22
  • 2021-04-29
  • 2018-07-21
  • 2019-09-06
  • 2021-04-20
相关资源
最近更新 更多