Akzeptieren von Clientregistrierungsanforderungen durch einen OpenID Connect-Provider konfigurieren
Der Clientregistrierungsendpunkt ist ein von einem Administrator verwalteter Service zum Registrieren, Aktualisieren, Löschen und Abrufen von Informationen zu einer OpenID-Connect-Relying-Party, die den OpenID Connect-Provider verwenden möchte. Der Registrierungsprozess kann wiederum Informationen für die Relying Party bereitstellen, einschließlich der OAuth-2.0-Client-ID und des geheimen Clientschlüssels, sofern diese Informationen nicht angegeben sind.
Vorbereitende Schritte
In einer Konfiguration mit lokalem Speicher ist der Clientregistrierungsservice darauf beschränkt, Informationen zur OpenID-Connect-Relying-Party abzurufen. Sie können die Datei server.xml modifizieren und weitere Operationen hinzufügen, um eine OpenID-Connect-Relying-Party zu registrieren, zu aktualisieren oder zu löschen.
Bei einer Konfiguration mit Datenbankspeicher gibt es keine Beschränkung des Clientregistrierungsservice. Alle Operationen werden über die REST-Schnittstelle ausgeführt.
Der Clientregistrierungsendpunkt ist ein geschützter Administrationsendpunkt mit der Rolle clientManager. Damit ein Benutzer auf diesen Endpunkt zugreifen kann, muss der Administrator ihm die Rolle clientManager zugewiesen haben.
Die Rolle clientManager ist eine der oauth-roles-Rollen, die für oauthProvider definiert wird. In der folgenden Beispielkonfiguration wird die Rolle clientManager dem Benutzer Alice oder Mitgliedern der Gruppe clientAdministrator zugewiesen.
<oauth-roles>
<authenticated>
<special-subject type="ALL_AUTHENTICATED_USERS"/>
</authenticated>
<clientManager>
<group name="clientAdministrator" />
<user name="Alice" />
</clientManager>
</oauth-roles>
Informationen zu diesem Vorgang
Clientregistrierungsinformationen zu einer OpenID-Connect-Relying-Party werden größtenteils verwendet, um Bedingungen für die Einsatzszenarien des Clients zu definieren. Andere Operationen des OP, die für den Client nicht transparent sind, verwenden die Metadaten der Clientregistrierung, um Autorisierungsentscheidungen zu treffen.
Im folgenden Beispiel wird davon ausgegangen, dass der Liberty-OP mit SSL am Port 443 konfiguriert ist.
https://server.example.com:443/oidc/endpoint/<Providername>/registration
Im obigen Beispiel wird außerdem vorausgesetzt, dass die Datei server.xml mit dem Benutzernamen clientAdmin und dem Kennwort clientAdminPassword konfiguriert ist und dass diesem Benutzer die oauth-role clientManager zugewiesen ist.
Die Metadaten der Clientregistrierung umfassen die folgenden Parameter:
Attributname | Datentyp | Erforderlich/Optional | Beschreibung |
---|---|---|---|
client_id | Eingabe/Ausgabe | Optional | Die Client-ID, die beim OP registriert wird. Wenn nicht anders angegeben, wird der Wert dieses Parameters standardmäßig während der Registrierung generiert. Dies ist eine Zeichenfolge. |
client_secret | Eingabe/Ausgabe | Optional | Der geheime Clientschlüssel, der beim OP registriert wird. Wenn nicht anders angegeben, wird der Wert dieses Parameters standardmäßig während der Registrierung generiert. Dies ist eine Zeichenfolge. Während einer Aktualisierungsoperation sorgt der Parameterwert ‘*’ dafür, dass der vorhandene Wert erhalten bleibt. Bei einem leeren Parameterwert wird ein neuer geheimer Clientschlüssel (client_secret) generiert. Bei einem nicht leeren Parameterwert wird der vorhandene Wert mit dem neu angegebenen Wert überschrieben. |
client_name | Eingabe/Ausgabe | Optional | Eine Beschreibung für den Client, der beim OP registriert wird. Wenn nicht anders angegeben, wird dieser Parameter standardmäßig auf den Wert des Parameters client_id gesetzt. Dies ist eine Zeichenfolge. |
application_type | Eingabe | Optional | Der Anwendungstyp, der den Client beschreibt.
Wenn nicht anders angegeben, lautet der Standardwert
web. Dies ist eine Zeichenfolge. Gültige Werte sind beispielsweise:
|
response_types | Eingabe | Optional | Die von diesem Client verwendeten Beschränkungen für den Antworttyp. Wenn nicht anders angegeben, lautet der Standardwert
code. Dies ist ein JSON-Array. Gültige Werte sind beispielsweise:
Für einen bestimmten response_type müssen die entsprechenden grant_types angegeben werden. Weitere Informationen finden Sie in der Beschreibung der response_types auf der Website Client Metadata. |
grant_types | Eingabe | Optional | Die von diesem Client verwendeten Beschränkungen für den Grant-Typ. Wenn nicht anders angegeben, lautet der Standardwert
authorization_code. Dies ist ein JSON-Array. Gültige Werte sind beispielsweise:
|
redirect_uris | Eingabe | Optional | Das Array der Umleitungs-URIs, auf die der Client beschränkt ist. Dies ist ein JSON-Array. |
post_logout_redirect_uris | Eingabe | Optional | Das Array der Umleitungs-URIs nach Abmeldung, auf die der Client beschränkt ist. Dies ist ein JSON-Array. |
trusted_uri_prefixes | Eingabe | Optional | Das Array vertrauenswürdiger URI-Präfixe, die der Client für sicher zum Senden von Zugriffstoken hält. Dies ist ein JSON-Array. |
scope | Eingabe | Optional | Mit einem Leerzeichen als Trennzeichen angegebene Bereichswerte, auf die der Client beschränkt ist. Dies ist eine Zeichenfolge. Wenn der Client jeden Bereich anfordern darf, kann der Wert ALL_SCOPES verwendet werden. |
preauthorized_scope | Eingabe | Optional | Mit einem Leerzeichen als Trennzeichen angegebene Bereichswerte, die vom Client vorab autorisiert sind und keine Einwilligung des Benutzers erfordern. Dies ist eine Zeichenfolge. |
subject_type | Eingabe | Optional | Die vom Client beschriebene Beschränkung des Subjekttyps. Dies ist eine Zeichenfolge. Gültige Werte sind beispielsweise:
|
token_endpoint_auth_method | Eingabe | Optional | Die vom Client verwendete Beschränkung der Authentifizierungsmethode für den Tokenendpunkt. Wenn nicht anders angegeben, lautet der Standardwert
client_secret_basic. Dies ist eine Zeichenfolge. Gültige Werte sind beispielsweise:
|
functional_user_id | Eingabe | Optional | Dieser Parameter gibt an, welche Benutzer-ID einer Anforderung zugeordnet werden soll, die im Namen eines Clients mit einem Grant-Typ client_credentials abgesetzt wird. Dies ist eine Zeichenfolge. |
functional_user_groupIds | Eingabe | Optional | Eine Liste mit Gruppen-IDs, die Zugriffstoken zugeordnet werden sollen, die von diesem Client mit dem Grant-Typ "Clientberechtigungsnachweise" abgerufen werden. Der Wert ist eine Liste
mit Gruppen-IDs. Der funktionale Benutzer ist ein Mitglied dieser Gruppen. Bei Angabe der Gruppen-IDs wird die Groß-/Kleinschreibung unterschieden. Die Zeichenfolgen werden vom
Berechtigungsserver definiert. Wenn der Wert mehrere Gruppen-IDs enthält, ist die Reihenfolge der IDs nicht wichtig. Ist die Liste leer, wird der Anspruch
übergangen. Wenn dieser Parameter der Clientmetadaten angegeben ist, wird der Wert im Antwortparameter
functional_user_groupIds vom Introspektionsendpunkt für Zugriffstoken zurückgegeben, die
für diesen Client mit dem Grant-Typ "Clientberechtigungsnachweise" ausgegeben werden. Wenn der Parameter functional_user_id nicht verwendet wird, wird
dieser Parameter ignoriert. Anmerkung: Berechtigungsserver dürfen nicht akzeptieren, dass der Client diesen Parameter selbst zuweist.
|
introspect_tokens | Eingabe | Optional | Ein Parameterwert, der angibt, ob der genannte Client berechtigt ist, ein vom OP ausgegebenes Zugriffstoken zu überprüfen. Dies ist ein boolescher Wert. |
registration_client_uri | Nur Ausgabe | Nicht zutreffend | Ein Parameter, der in einer Antwort mit dem Wert zurückgegeben wird, der die eindeutige URL für einen registrierten Client angibt. Dies ist eine Zeichenfolge. |
client_secret_expires_at | Nur Ausgabe | Nicht zutreffend | Ein Parameter, der in einer Antwort mit dem Wert zurückgegeben wird, der die Zeit in Sekunden (ab 1970-01- 01T0:0:0Z, gemessen in UTC) angibt, nach der der geheime Clientschlüssel abläuft. Der Wert 0 gibt an, dass keine Verfallszeit gilt. |
client_id_issued_at | Nur Ausgabe | Nicht zutreffend | Ein Parameter, der in einer Antwort mit dem Wert zurückgegeben wird, der die Zeit in Sekunden (ab 1970-01- 01T0:0:0Z, gemessen in UTC) angibt, nach der die Client-ID ausgegeben wurde. Der Wert 0 gibt an, dass keine Ausgabezeit für die Client-ID festgestellt werden konnte. |