Dynamische Client-Registrierung mit dem neuen „ OpenID Connect“-Anbieter

Die dynamische Clientregistrierung ermöglicht der Relying Party (RP) von OpenID Connect (OIDC), sich selbst beim OpenID Connect-Provider (OP) zu registrieren.

Vorbereitende Schritte

Es basiert auf den Spezifikationen „ OpenID “ und „Connect Dynamic Client Registration“ ( 1.0 ).

Neue OIDC-Anwendungen werden von einem Tenantadministrator oder einem Benutzer mit Verwaltungszugriff auf den Tenant erstellt. Nun können OIDC-Anwendungen auch dynamisch über die dynamische Client-Registrierung erstellt werden.

Der Endpunkt für die dynamische Clientregistrierung befindet sich hier: https://{{tenant}}/oauth2/register.

Informationen zu dieser Task

Konfigurieren Sie die Einstellungen für die dynamische Client-Registrierung und registrieren Sie anschließend die neue OIDC-Anwendung mithilfe der Registrierungs-API dynamisch. Bei der Anwendung handelt es sich entweder um eine „ "OpenID -Connect“- oder eine „ "OpenID -Connect for Open Banking“-Anwendung.

Dynamische Einstellungen für die Kundenregistrierung

Die Einstellungen für die dynamische Client-Registrierung können so konfiguriert werden, dass die Standardwerte für die dynamische Client-Registrierung festgelegt werden. Siehe „Konfigurieren der Einstellungen für die dynamische OIDC-Client-Registrierung “.

Die entsprechenden Einstellungen sind in der folgenden Tabelle beschrieben.

Feld Beschreibung
Erteilungstypen Die zu verwendenden Zuschussarten, sofern diese nicht in den Daten der dynamischen Mandantenregistrierung angegeben sind. Die unterstützten Authentifizierungsarten sind „Autorisierungscode“, „Implicit“, „Passwort“, „Aktualisierungstoken“ und „Client-Anmeldedaten“. Wenn das Open-Banking-Rezept nicht „Keine“ lautet, ist die Berechtigungsart „Passwort“ nicht zulässig.
Anforderungen für ID-Token Die Standard-Claims für ID-Token und Benutzerinformationen, sofern diese nicht in der Nutzlast der dynamischen Client-Registrierung angegeben sind.
Anforderungen für Token Die Standard-Claims für Introspektion und JWT-Zugriffstoken, sofern diese nicht in der Nutzlast der dynamischen Client-Registrierung angegeben sind.
Typ von Zugriffstoken Die Art des zu generierenden Zugriffstokens. Die zulässigen Werte sind „Standard“ und „JWT“.
Signaturalgorithmus für ID-Token Der Algorithmus, der zum Signieren von ID-Tokens verwendet wird, sofern er nicht in der Nutzlast der dynamischen Client-Registrierung angegeben ist.
Benutzerzustimmung Legen Sie fest, ob die Zustimmung des Benutzers eingeholt werden soll, falls diese in den Daten der dynamischen Client-Registrierung nicht angegeben ist.
Lebensdauer des Zugriffstokens Die Gültigkeitsdauer des Zugriffstokens in Sekunden. Maximal 2147483647, minimal 1.
Lebensdauer des Aktualisierungstokens Die Gültigkeitsdauer des Aktualisierungstokens in Sekunden. Maximal 2147483647, minimal 1.
PKCE-Verifizierung erzwingen Wählen Sie aus, ob PKCE erzwungen werden soll, wenn dies in der Nutzlast der dynamischen Client-Registrierung nicht angegeben ist.
Berechtigung allen Benutzern erteilen Stellen Sie fest, ob alle Benutzer zur Nutzung dieses Clients berechtigt sind, sofern dies nicht in den Daten der dynamischen Client-Registrierung angegeben ist.
Gültigkeitsdauer des Anforderungsobjekts Die Gültigkeitsdauer des Anfrageobjekts in Sekunden. Maximal 2147483647, minimal 1.
Für Anforderungsobjekt 'exp' als erforderlich definieren Legt fest, ob das Attribut „exp“ im Anfrageobjekt erforderlich ist.
Angepasste Clientberechtigungsnachweise zulassen Legt fest, ob benutzerdefinierte Client-Anmeldedaten zulässig sind. Wenn dieser Wert auf „false“ gesetzt ist, können Client-ID und Secret nicht in der Nutzlast für die dynamische Client-Registrierung angegeben werden.
Zulässige Signieralgorithmen für Anforderungsobjekte Eine Liste der zulässigen Signaturalgorithmen für das signierte JWT-Anfrage-Token. Wenn diese Option nicht festgelegt ist, sind alle unterstützten Algorithmen zulässig.
Anforderungsumsetzungsregel Geben Sie die Regel zum Ändern der dynamischen Clientregistrierungsanforderung ein. Wenn dieser Wert nicht festgelegt ist, werden keine Änderungen an der Anfrage zur dynamischen Client-Registrierung vorgenommen.
Anleitung für Open Banking Das Open-Banking-Rezept, das bei allen dynamischen Kundenregistrierungen anzuwenden ist. Wenn dieses Feld auf „Keine“ gesetzt ist, wird eine Anwendung namens „ 'OpenID Connect“ erstellt. Wird ein anderer Wert eingestellt, wird eine Anwendung namens „ 'OpenID Connect for Open Banking“ erstellt.

Informationen zu den Abschnitten „Software-Erklärung“, „Autorisierung anfordern“ und „Registrierungs-Zugriffstoken“ der Einstellungen finden Sie unter „Konfigurieren der Einstellungen für die dynamische OIDC-Client-Registrierung“.

Trägertokenauthentifizierung für dynamische Clientregistrierung als erforderlich definieren

Wenn die Anforderungsautorisierung so konfiguriert ist, dass für die dynamische Client-Registrierung eine Bearer-Token-Autorisierung erforderlich ist, wird ein erstes Zugriffstoken benötigt.

Erstellen Sie einen API-Client mit der Berechtigung Manage OIDC client registration dynamically. Informationen zum Erstellen des API-Clients finden Sie unter „Verwalten des API-Zugriffs für Anwendungen “.

Rufen Sie nach der Erstellung des API-Clients mithilfe des Ablaufs client_credentials das Zugriffstoken ab. Der folgende Code ist ein Beispiel:

curl -ki -v https://{{tenant}}/v1.0/endpoint/default/token -d "grant_type=client_credentials&client_id=<clientId>&client_secret=<clientSecret>"

Für die dynamische Client-Registrierungsanfrage muss das Bearer-Token im Autorisierungsheader angegeben werden.

MTLS für dynamische Clientregistrierung als erforderlich definieren

Wenn die Anforderungsautorisierung so konfiguriert ist, dass eine gegenseitige TLS erforderlich ist, muss der Client für die Anforderung ein gültiges Zertifikat vorlegen.

Neue Anwendung über die Registrierungs-API registrieren

Die folgende Tabelle enthält die Liste der Clientmetadaten, die gegenwärtig unterstützt werden.

Metadatenname Metadatenbeschreibung Optional Gültige Werte
client_name Anwendungsname wahr Zeichenfolge
client_id Die Client-ID wird automatisch generiert, wenn sie nicht angegeben wird. wahr Zeichenfolge
client_secret Der geheime Clientschlüssel wird automatisch generiert, wenn er nicht angegeben wird. wahr Zeichenfolge
redirect_uris Liste der Umleitungs-URIs falsch Liste der Zeichenfolge-URIs
grant_types Array der Erteilungstypen, die von der Anwendung verwendet werden können. wahr „authorization_code“, „implicit“, „password“, „refresh_token“ und „client_credentials“
id_token_signed_response_alg Tokensignieralgorithmus wahr 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'PS256', 'PS384', 'PS512'
all_users_entitled Setzen Sie diese Angabe auf 'true', wenn alle Benutzer zur Verwendung dieser Anwendung berechtigt sein sollen. wahr 'true' oder 'false'
jwks_uri URL des JSON Web Key Set-Dokuments des Clients wahr URL
consent_action Benutzerzustimmungsanforderung wahr 'never_prompt' oder 'always_prompt'
enforce_pkce Verwendung von PKCE erzwingen wahr 'true' oder 'false'
Umfang Durch Leerzeichen getrennte Zeichenfolge zulässiger Bereiche. wahr Zeichenfolge
id_token_claims Liste der Ansprüche für das ID-Token (id_token) und Benutzerinformationen wahr Liste der Zeichenfolgen
token_claims Liste der Ansprüche für Introspektion (introspect) und JWT-Zugriffstoken wahr Liste der Zeichenfolgen
initiate_login_uri Die URL zum Starten der Anmeldung. wahr URL
Antworttypen Von diesem Client verwendete Antworttypen. wahr Liste der Zeichenfolgen
token_endpoint_auth_method Clientauthentifizierungsmethode für den Tokenendpunkt. wahr 'default', 'client_secret_basic', 'client_secret_post', 'private_key_jwt', 'tls_client_auth'
tls_client_auth_subject_dn Der erwartete eindeutige Name des Zertifikats, den der Client bei der gegenseitigen Authentifizierung nach dem „ TLS “-Prinzip verwendet. wahr Zeichenfolge
tls_client_auth_san_dns Der erwartete DNS-Name-SAN-Eintrag im Zertifikat, den der Client bei der gegenseitigen Authentifizierung nach dem „ TLS “-Prinzip verwendet. wahr Zeichenfolge
tls_client_auth_san_uri Der erwartete URI-SAN-Eintrag im Zertifikat, den der Client bei der gegenseitigen Authentifizierung nach dem „ TLS “-Verfahren verwendet. wahr Zeichenfolge
tls_client_auth_san_ip Der erwartete SAN-Eintrag für die IP-Adresse im Zertifikat, den der Client bei der Mutual- TLS -Authentifizierung verwendet. wahr Zeichenfolge
tls_client_auth_san_email Der erwartete SAN-Eintrag für die E-Mail-Adresse im Zertifikat, den der Client bei der gegenseitigen Authentifizierung nach dem „ TLS “-Prinzip verwendet. wahr Zeichenfolge
tls_client_certificate_bound_access_tokens Gibt an, ob eine Zertifikatsbindung für das Zugriffstoken erforderlich ist. wahr 'true' oder 'false'
userinfo_signed_response_alg Der Signaturalgorithmus für JWT-Antworten mit Benutzerinformationen. wahr 'RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'PS256', 'PS384', 'PS512'
userinfo_encrypted_response_alg Der Verschlüsselungsalgorithmus für JWT-Antworten mit Benutzerinformationen. wahr „RSA-OAEP“, „ RSA-OAEP-256 “
userinfo_encrypted_response_enc Der Algorithmus zur Verschlüsselung des JWT-Inhalts der Benutzerinformationsantwort. wahr 'A128GCM', 'A192GCM', 'A256GCM'

Beispiel für die Registrierung einer neuen Anwendung

Der folgende Code ist ein Beispiel für eine Anfrage, wenn die dynamische Client-Registrierung so konfiguriert ist, dass eine Autorisierung per Bearer-Token erforderlich ist.

curl -ki -H "Authorization: bearer <access-token>" -H "Content-Type:application/json" -X POST https://{{tenant}}/oauth2/register --data-binary '{"redirect_uris":["https://www.redirect.com"],"client_name":"MyApplication"}'

Antwort


{
	"grant_types": [
		"authorization_code"
	],
	"client_secret_expires_at": "0",
	"registration_client_uri": "https://{{tenant}}/oauth2/register/<clientId>",
	"client_secret": "<client_secret>",
	"redirect_uris": [
		"https://www.redirect.com"
	],
	"client_id_issued_at": "1586933118",
	"client_name": "MyApplication",
	"registration_access_token": "<access_token>",
	"client_id": "<clientId>",
	"id_token_signed_response_alg": "RS256"
}

Weitere Konfiguration der Anwendung

Nachdem die Anwendung erstellt wurde, können Sie weitere Optionen für die Anwendung konfigurieren, beispielsweise Attributzuordnungen, Zugriffsrichtlinien, Identitätsquellen, berechtigte Benutzer und vieles mehr. Informationen zum Konfigurieren dieser Optionen finden Sie unter „Konfigurieren von Single Sign-On in der Anwendung ‚ OpenID Connect‘ “ oder unter „Konfigurieren von Single Sign-On in den Anwendungen ‚ OpenID Connect for Open Banking ‘“.

OIDC-Anwendung mithilfe der Registrierungs-API aktualisieren

Der folgende Code zeigt, wie man das registration_access_token im vorherigen Schritt erstellte Bearer-Token als Autorisierungstoken verwendet und eine PUT-Anfrage sendet, um den Client zu ändern. Bitte beachten Sie, dass Änderungen an der OIDC-Anwendungskonfiguration überschrieben werden.

curl -ki -H "Authorization: bearer <registration_access_token>" -H "Content-Type:application/json" -X PUT https://{{tenant}}/oauth2/register/<client-id> --data-binary '{"redirect_uris":["https://www.redirect.com/callback"],"client_name":"MyApplication2"}'

OIDC-Anwendung mithilfe der Registrierungs-API lesen

Die Registrierungs-API bietet auch eine Möglichkeit, die OIDC-Anwendung erneut zu lesen.

curl -ki -H "Authorization: bearer <registration-access-token>" https://{{tenant}}/oauth2/register/<clientId>

OIDC-Anwendung mithilfe der Registrierungs-API löschen

Die Registrierungs-API bietet auch eine Möglichkeit, die OIDC-Anwendung zu löschen.

curl -ki -H "Authorization: bearer <registration-access-token>" -X DELETE https://{{tenant}}/oauth2/register/<clientId>

Das Token für den Registrierungszugriff ist abgelaufen.

Wenn das Registrierungs-Zugriffstoken abläuft, rufen Sie ein neues Zugriffstoken ab, indem Sie die Client-ID und den geheimen Schlüssel des registrierten Clients verwenden. Siehe „Erste Zugriffstoken abrufen “.