2017-11-17 2 views
1

Im OpenID Connect Core 1.0 incorporating errata set 1 Section 12.2 aktualisieren ist, sagt:Wie ein id_token

12.2. Successful Refresh Response 

Upon successful validation of the Refresh Token, the response body is the Token Response of Section 3.1.3.3 except that it might not contain an id_token. 

Ursprünglich wenn die id_token erworben wird, ist es ein signiertes und vielleicht verschlüsselt, JWT. Das id_token wird dann an andere Dienste innerhalb derselben Sicherheitsdomäne weitergeleitet. Für diese anderen Dienste muss sichergestellt werden, dass der Endbenutzer die Anforderung authentifiziert hat. Dies funktioniert gut auf die ursprüngliche Anfrage. In dem Aktualisierungsszenario und wenn das id_token jedoch abgelaufen ist, haben die "anderen Dienste" keine Methode, den Benutzer zu bestätigen.

Sicher die gleichen Informationen sind am Benutzer Info Endpunkt verfügbar, aber dies erfordert die "anderen Dienste", um das Zugriffs-Token zu erhalten. Basierend auf den Prinzipien des geringsten Prinzips hat das Access Token mehr Privilegien als das ID_Token, das weitergeleitet wird.

Die einzige andere Option, die mir bekannt ist, besteht darin, das id_token in ein anderes JWT zu kopieren und es zu senden, aber das ist natürlich mehr "mach Arbeit".

Es scheint mir, dass die Rückgabe eines id_token ein Problem ist, wenn es nicht Umfang Änderungen von der ursprünglichen Anfrage gab.

Antwort

0

Das OpenID Connect-Protokoll überlässt dem Implementierer einige Implementierungsentscheidungen. Dieses Szenario, das Sie beschrieben haben, ist eine solche Sache. Aber ich sehe mehrere Optionen können Sie ausprobieren,

prompt = keine

Dies ermöglicht ein SSO-Verhalten zwischen Autorisierungsserver

Wenn die genannten abhängigen Dienste der gleiche gemeinsame Sitzung mit Autorisierungsserver verbrauchen können, Sie können prompt = none verwenden, um ein ID-Token ohne Interaktion zu erhalten.

Der Autorisierungsserver darf nicht mit dem End-User im folgenden Fall interagieren:

die Authentifizierungsanfrage enthält die Aufforderung Parameter mit dem Wert keine. In diesem Fall MUSS der Autorisierungsserver einen Fehler zurückgeben, wenn ein Endbenutzer nicht bereits authentifiziert ist oder nicht automatisch authentifiziert werden konnte.

Auch die Autorisierungsanforderung kann mit einem minimalen Umfang Werte gesendet werden, wenn diese abhängigen Dienste eine solche Anforderung haben.

Session Sharing

Was passiert, wenn genannten Dienstleistungen innerhalb derselben Domäne befinden und die gleiche Sitzung teilen. Wird das nicht dazu führen, dass sie dasselbe Prinzip teilen? Dies bedeutet, dass Sie das ID-Token nicht mit abhängigen Diensten teilen müssen.

Verwandte Themen