2016-09-14 2 views
1

Wie kann ich (kann ich?) X509SecurityKey für die Asp.Net Core JWT-Validierung verwenden?Wie kann ich X509SecurityKey für die Asp.Net Core JWT-Validierung verwenden?

Meine aktuellen Code ist in etwa:

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

und später für die Unterzeichnung Anmeldeinformationen ...

new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256) 

Diese eine Ausnahme verursacht:

signatureAlgorithm: 'HS256', SecurityKey : 'Microsoft.IdentityModel.Tokens.X509SecurityKey' wird nicht unterstützt. bei Microsoft.IdentityModel.Tokens.CryptoProviderFactory.CreateProvider (SecurityKey Schlüssel, String-Algorithmus, Boolean willCreateSignatures) bei Microsoft.IdentityModel.Tokens.CryptoProviderFactory.CreateForSigning (SecurityKey Schlüssel, String-Algorithmus)

habe ich versucht, ein paar Algorithmen, aber es scheint nicht, dass es mit irgendwelchen von ihnen funktioniert?

+0

Siehe ähnliche Problem https://github.com/IdentityServer/IdentityServer4/issues/61 Es scheint, das Problem ist über Signaturalgorithmus. –

Antwort

4

Ich habe ein paar Algorithmen ausprobiert, aber es scheint nicht, als ob es mit ihnen funktioniert?

Sie versuchen, mit einem HMAC-Algorithmus einen asymmetrischen Schlüssel (in einem X.509-Zertifikat eingebettet) zu verwenden (die wir oft missbräuchlich Aufruf „symmetrischer Signatur-Algorithmus“): dies nicht funktionieren können.

Wenn Ihr Zertifikat ein RSA-Zertifikat ist, sollten Sie SecurityAlgorithms.RsaSha256 verwenden können.

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

Danke, es funktioniert mit RsaSha512. Ich musste das Zertifikat auch mit einem eingebetteten privaten Schlüssel neu erstellen. – SledgeHammer

+0

@PinPoint Ich habe eine ähnliche Frage, bitte helfen Sie mir da drüben: https://stackoverflow.com/questions/46294373/net-core-issuersigningkey-from-file-for-jwt-bearer-authentication – monty

Verwandte Themen