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 “.