Was ist OpenID Connect (OIDC) Discovery?
OpenID Connect (OIDC) Discovery, definiert in OpenID Connect Discovery 1.0 , ist ein Mechanismus, der es Clients ermöglicht, die Endpunkte und Konfigurationen des OpenID Providers automatisch zu entdecken. Es ist ein moderner Ansatz, um die Kommunikation zwischen Clients und OpenID Providers zu vereinfachen.
OIDC Discovery hat zwei Hauptkomponenten:
- OpenID Provider issuer (Issuer) Discovery: Der Client kann den Standort (URL) des Issuers über WebFinger oder ein externes Dokument entdecken.
- OpenID Provider Metadaten: Der Client kann das Metadatendokument abrufen und verarbeiten, um mehr über die Fähigkeiten und Endpunkte des OpenID Providers zu erfahren.
Wie funktioniert OIDC Discovery?
OpenID Provider issuer (Issuer) Discovery
Der OpenID Provider issuer (Issuer) ist ein eindeutiger Bezeichner (in der Regel identisch mit seiner URL), den Clients verwenden können, um die Konfiguration des OpenID Providers zu entdecken. Jedoch müssen Clients den Standort des Issuers kennen, bevor sie das Metadatendokument abrufen können.
Wenn der Standort des Issuers bereits bekannt ist, kann der Client diesen Schritt überspringen. Andernfalls kann der Client WebFinger verwenden, um den Standort des Issuers zu entdecken. Die notwendigen Informationen für die OIDC issuer (Issuer) Discovery sind:
host
: Wo der WebFinger-Service gehostet wird.resource
: Die E-Mail-Adresse oder URL des OpenID Providers.rel
: Der Beziehungstyp, der aufhttp://openid.net/specs/connect/1.0/issuer
gesetzt werden sollte.
Zum Beispiel versucht ein Nutzer mit der E-Mail-Adresse [email protected]
, den Standort des Issuers auf example.com
zu entdecken. Die WebFinger-Anfrage würde so aussehen:
GET /.well-known/webfinger?resource=acct%3Afoo%40bar.com&
rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer HTTP/1.1
Host: example.com
Der dekodierte resource
-Parameter ist acct:[email protected]
, und der rel
-Parameter ist http://openid.net/specs/connect/1.0/issuer
.
OpenID Provider Metadaten
Sobald der Client den Standort des Issuers kennt, kann er das Metadatendokument vom Well-Known-Endpunkt abrufen. Der Pfad zum Metadatendokument ist /.well-known/openid-configuration
relativ zur URL des Issuers.
Zum Beispiel, wenn die URL des Issuers https://oidc.example.com
ist, kann der Client das Metadatendokument von https://oidc.example.com/.well-known/openid-configuration
abrufen. Hier ist ein nicht normatives Beispiel der Metadatenantwort:
{
"issuer": "https://oidc.example.com",
"authorization_endpoint": "https://oidc.example.com/authorize",
"token_endpoint": "https://oidc.example.com/token",
//...
}
Das Metadatendokument enthält viele nützliche Informationen über den OpenID Provider. Lassen Sie uns einige wichtige Felder hervorheben:
issuer
: Der eindeutige Bezeichner des OpenID Providers. Er sollte zur Validierung der Token verwendet werden.authorization_endpoint
: Die URL zur Initiierung der Authentifizierungsanforderung (Authentication request) .token_endpoint
: Die URL zum Senden des Tokenanforderung (Token request) .jwks_uri
: Die URL, um die JSON-Web-Schlüsselset (JSON Web Key Set, JWKS) für die Signierschlüssel (Signing key) -Validierung abzurufen.response_types_supported
: Die unterstützten Antworttypen für die Authentifizierungsanforderung (Authentication request) .scopes_supported
: Die unterstützten Scopes für die Authentifizierungsanforderung (Authentication request) .claims_supported
: Die unterstützten Claims für das ID-Token .token_endpoint_auth_methods_supported
: Die unterstützten Client-Authentifizierungsmethoden für den Tokenanforderung (Token request) .
Für eine vollständige Liste der Metadatenfelder, konsultieren Sie bitte die OpenID Connect Discovery 1.0 Spezifikation.