2016-09-14 11 views
1

Asp.Net Core JWTの検証にX509SecurityKeyを使用するにはどうしたらいいですか?Asp.Net Core JWTの検証にX509SecurityKeyを使用するにはどうすればよいですか?

私の現在のコードは、おおよそ次のとおりです。

のsignatureAlgorithm: 'HS256'、SecurityKeyこれは、例外が発生し

new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256) 

署名資格情報の後に

 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]); 
     } 

と... : 'Microsoft.IdentityModel.Tokens.X509SecurityKey' はサポートされていません。 Microsoft.IdentityModel.Tokens.CryptoProviderFactory.CreateProviderで Microsoft.IdentityModel.Tokens.CryptoProviderFactory.CreateForSigningで(SecurityKeyキー、文字列アルゴリズム、ブールwillCreateSignatures) (SecurityKeyキー、文字列アルゴリズム)

私はいくつかのアルゴリズムを試してみましたが、それは彼らのいずれかと動作するようには思われません?

+0

類似の問題を参照してください。https://github.com/IdentityServer/IdentityServer4/issues/61問題は署名アルゴリズムに関するものです。 –

答えて

4

いくつかのアルゴリズムを試しましたが、どちらのアルゴリズムとも動作していないようですね。

あなたは(私たちはしばしばみだりにコール「対称署名アルゴリズム」という)HMACアルゴリズムで(X.509証明書に埋め込まれた)非対称キーを使用しようとしている:これが動作することはできません。

証明書がRSA証明書であると仮定すると、SecurityAlgorithms.RsaSha256を使用できるはずです。

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

ありがとうございます、それはRsaSha512で動作します。私は秘密鍵が埋め込まれた証明書を作り直さなければならなかった。 – SledgeHammer

+0

@PinPoint私は似たような質問をしています。そこを私に助けてください。https://stackoverflow.com/questions/46294373/net-core-issuersigningkey-from-file-for-jwt-bearer-authentication – monty

関連する問題