2017-02-14 4 views
2

ich OpenIddict in meiner Web-app bin mit und haben gerade ersetztÄndern des Signaturschlüssel nicht ungültig bestehende Token

.AddEphemeralSigningKey() 

mit

.AddSigningCertificate("my thumbprint") 

Ich möchte jetzt bestätigen, dass das neue Zertifikat wird tatsächlich verwendet, aber wenn ich ein access_token einreiche, das während der Verwendung des alten (ephemeren) Schlüssels erstellt wurde, wird es ohne Problem angenommen. Ich würde erwarten, dass es abgelehnt wird, jetzt wo die Web-App einen anderen Signaturschlüssel verwendet!

Oder missverstehe ich den Zweck des Unterschriftsschlüssels?

Ich fand this Post, der angibt, dass der Signaturschlüssel nicht verwendet wird, um Zugriffstoken zu signieren, die bei der Verwendung des ASP.Net Core Data Protection-Stacks erstellt wurden, was meines Erachtens zu meinem Szenario passt, da ich keine JWT-Token verwende oder das Token anpasse Format.

In diesem Fall, wofür wird der Signaturschlüssel verwendet und/oder warum wird er benötigt?

Antwort

2

In diesem Fall, was ist der Signierungsschlüssel verwendet und/oder warum ist es erforderlich?

Wie in dem Beitrag, den Sie erwähnt, die Signaturschlüssel nur die JWT Token von OpenIddict ausgegeben verwendet wird unterzeichnen (die die Identität Token + die Zugriffstoken enthält, wenn Sie für JWT entschieden).

Wenn Sie das „ephemeren Verschlüsselung/Validierungsschlüssel“ Szenario mit dem Standard-Token-Format replizieren mögen, können Sie OpenIddict fragen einen ephemeren Datenschutz verwenden:

public class Startup 
{ 
    private readonly IDataProtectionProvider _provider = 
     new EphemeralDataProtectionProvider(); 

    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddOpenIddict(options => 
     { 
      // ... 

      options.UseDataProtectionProvider(_provider); 
     }); 
    } 

    public void Configure(IApplicationBuilder app) 
    { 
     app.UseOAuthValidation(options => 
     { 
      options.DataProtectionProvider = _provider; 
     }); 

     app.UseOpenIddict(); 
    } 
} 

Sie können auch die Datenschutzoptionen außer Kraft setzen

public class Startup 
{ 
    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddDataProtection() 
      .UseEphemeralDataProtectionProvider(); 

     services.AddOpenIddict(); 
    } 

    public void Configure(IApplicationBuilder app) 
    { 
     app.UseOAuthValidation(); 

     app.UseOpenIddict(); 
    } 
} 

Es ist erwähnenswert, dass die Unterzeichnung zentrale Anforderung war entspannt in den letzten Bits: einen temporären Datenschutz für die gesamte Anwendung zu verwenden, die Registrierung eines certificat e oder ein kurzlebiger Schlüssel ist nicht mehr erforderlich, es sei denn, Sie entscheiden sich für JWT-Zugriffstoken oder aktivieren den impliziten Datenfluss. Wenn Sie also den Passwortfluss verwenden, ist das Hinzufügen eines Schlüssels nicht mehr obligatorisch.

Verwandte Themen