2017-01-10 4 views
7

Gemäß den Dokumenten verwendet IdentityServer ein asymmetrisches Schlüsselpaar, um JWTs zu signieren und zu validieren. Man könnte entweder AddTemporarySigningCredential() in der Konfiguration verwenden, die bei jedem Start einen neuen RSA erstellt, oder AddSigningCredential(..) mit einem RSA-Schlüssel oder einem Zertifikat verwenden.AddTemporarySigningCredential vs AddSigningCredential in IdentityServer4

Das Dokument erwähnt die temporäre Version ist nützlich für Entwicklungssituationen, aber es zeigt nicht, was der Nachteil davon ist, wenn es in einer Produktionsumgebung verwendet wird.

Ich habe eine Aspnetcore Web API, in der die Clients mit dem IdentityServer4 authentifiziert werden. Das System funktioniert im Moment mit dem temporaryigningcredential, aber ich frage mich, ob es einen Vorteil bei der Verwendung der anderen Variante gibt.

Danke,

Antwort

12

Der Nachteil ist, dass jedes Mal, wenn IdentityServer, das Schlüsselmaterial neu starten wird sich ändern - oder IOW - alle Token, die mit dem vorherigen Schlüsselmaterial unterzeichnet wurden, werden zur Validierung fehl.

"Temporär" ist wirklich nur für Situationen, in denen Sie kein anderes Schlüsselmaterial zur Verfügung haben.

+0

Aus reiner Neugier, was passiert mit einem Client, der versucht, in diesem Beispiel mit dem alten Schlüsselmaterial zu authentifizieren? Wird es einfach ein neues Token anfordern? –

7

Statt AddTemporarySigningCredential betrachten AddDeveloperSigningCredential

Von http://docs.identityserver.io/en/release/topics/startup.html#refstartupkeymaterial zu verwenden:

AddDeveloperSigningCredential

gleichen Zweck wie die temporäre Unterzeichnung Berechtigungsnachweis. Aber diese Version beharrt den Schlüssel zum Dateisystem, so dass es stabil bleibt zwischen Server Neustarts. Dies behebt Probleme, wenn die clients/api-Metadaten-Caches während der Entwicklung nicht mehr synchron sind.

WARNUNG: AddDeveloperSigningCredential kann nur verwendet werden, wenn IdentityServer Host auf einem SINGLE Maschine läuft, für Produktionsfarm benötigen Sie AddSigningCredential verwenden.

+2

AddTemporary scheint in der neuesten Vorschau zu fehlen, die .net-Kern unterstützt ?? –

+2

@RasmusChristensen, richtig, siehe https://github.com/IdentityServer/IdentityServer4/issues/1139 –

Verwandte Themen