Client Secret-Abruf von OAuth verwalten
Einführung
Mit Oracle Access Management (OAM) können Sie OAuth-Clients erstellen, die für die Interaktion mit OAuth-Providern und -Anwendungen verwendet werden. Standardmäßig wird das nach der Erstellung erstellte OAuth-Client Secret gehasht gespeichert und kann nicht verwendet werden, d.h. es kann nicht abgerufen werden. Ab dem Bundle-Patch vom Oktober 2022 können Sie das Secret eines OAuth-Clients in verwendbarer Form abrufen. Administratoren müssen das Client-Recovery-Feature OAuth aktivieren, um das Client Secret abzurufen. Ältere OAuth-Clients, die vor dem Patch erstellt wurden, müssen aktualisiert/zurückgesetzt werden, bevor das Secret abgerufen werden kann. Wenn das Client Secret Recovery-Feature OAuth deaktiviert ist, gibt die GET-API des OAuth-Clients das Secret in Hashform (nicht verwendbar) zurück, auch nachdem der BP vom Oktober 2022 angewendet wurde.
Ziele
Richten Sie den OAuth-Service in Oracle Access Management ein.
Voraussetzungen
- Oracle Access Management installieren und die Funktion OAuth einrichten (Überblick über OAM OAuth)
- OAuth Service in Oracle Access Management verwalten (OAM einrichten und konfigurieren OAuth)
Aufgabe 1: Recovery des OAM-Client-Secrets OAuth aktivieren
-
Je nach Konfiguration können Sie diese Funktion aktivieren oder deaktivieren. Wenn die Konfiguration nicht vorhanden ist, geht OAM davon aus, dass das Feature deaktiviert ist. Konfigurationseinstellungspfad:
/DeployedComponent/Server/NGAMServer/Profile/ssoengine/OAuthConfig
Konfigurationseinstellungsname:ClientSecretRecoveryEnabled
Mit dem folgenden Befehl können Sie bestimmen, ob das Client Secret Recovery aktiviert oder deaktiviert ist.curl --location --request GET 'https://<admin-host>:<admin-port>/iam/admin/config/api/v1/config?path=/DeployedComponent/Server/NGAMServer/Profile/ssoengine/OAuthConfig' --header 'Authorization: <Basic Authz Header>'
-
Wenn die Konfiguration nicht vorhanden oder deaktiviert ist (false), führen Sie den folgenden Befehl aus, um den Wert hinzuzufügen/zu aktualisieren und auf "true" zu setzen. Hinweis: Überspringen Sie diesen Schritt, wenn der Wert bereits vorhanden und auf "true" gesetzt ist.
curl --location --request PUT 'https://<admin-host>:<admin-port>/iam/admin/config/api/v1/config?path=/DeployedComponent/Server/NGAMServer/Profile/ssoengine/OAuthConfig' --header 'Authorization: <Basic Authz Header>' /--header 'Content-Type: application/xml' --data-raw '<Setting Name="OAuthConfig" Type="htf:map" Path="/DeployedComponent/Server/NGAMServer/Profile/ssoengine/OAuthConfig"> <Setting Name="ClientSecretRecoveryEnabled" Type="xsd:boolean">true</Setting></Setting>'
Beschreibung der Abbildung updating_config_to_true.jpg
Prüfen Sie mit der GET-API in Schritt 1, ob der Wert erfolgreich aktualisiert wurde.
Aufgabe 2: OAuth-Clientdetails abrufen - Für neu erstellten Client
Wenn das Secret Recovery-Feature auf einem Client aktiviert ist, gibt die GET-Client-API das Secret im Format Basic <base64 encoded id:secret>
zurück.
-
Erstellen Sie den Client mit den folgenden Attributen.
- Clientname:
SampleClientNew1
- Client-ID:
SampleClientNew1_id
- Secret:
client_secret
- Clientname:
-
Rufen Sie die Clientdetails mit der Client-API OAuth ab.
curl --location --request GET 'https://<admin-host>:<admin-port>/oam/services/rest/ssa/api/v1/oauthpolicyadmin/client?identityDomainName=SampleDomain&name=SampleClientNew1' --header 'Authorization: <Basic Authz Header>' --header 'Accept: application/json'
Das zurückgegebene Secret ist:
Basic U2FtcGxlQ2xpZW50TmV3MV9JZDpjbGllbnRfc2VjcmV0
Decodierter Wert für Basis 64:SampleClientNew1_Id:client_secret
Aufgabe 3: OAuth-Clientdetails abrufen - Für einen vorhandenen Client
Bei einem Client, der vor der Aktivierung des Secret Recovery-Features erstellt wurde, kann das Secret nur wiederhergestellt werden, wenn das Feature zurückgesetzt/aktualisiert wird. Die GET-Client-API gibt eine Meldung zurück, mit der das Feature zurückgesetzt wird, um den Wert abzurufen.
-
Erstellen Sie den Client mit den folgenden Attributen.
- Clientname:
SampleClientOld1
- Client-ID:
SampleClientOld1_id
- Secret:
client_secret
- Clientname:
-
Rufen Sie die Clientdetails mit der Client-API OAuth ab.
curl --location --request GET 'https://<admin-host>:<admin-port>/oam/services/rest/ssa/api/v1/oauthpolicyadmin/client?identityDomainName=SampleDomain&name=SampleClientOld1' --header 'Authorization: <Basic Authz Header>' --header 'Accept: application/json'
Beschreibung der Abbildung get_old_client.jpg
Die Meldung lautet: OAMSSA-06399: Aktuelles Secret kann nicht wiederhergestellt werden. Setzen Sie das Secret zurück, um es wiederherzustellen.
-
Aktualisieren Sie das Client Secret mit der OAuth-Client-API.
curl --location --request PUT 'https://<admin-host>:<admin-port>/oam/services/rest/ssa/api/v1/oauthpolicyadmin/client?identityDomainName=SampleDomain&name=SampleClientOld1' --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: <Basic Authz Header>' --data-raw '{ "secret": "client_secret_new" }'
Beschreibung der Abbildung client_secret_modify.jpg
Neues Secret:
client_secret_new
-
Rufen Sie die aktualisierten Clientdetails mit der Client-API OAuth ab. Die GET-Client-API gibt das Secret im Format
Basic <base64 encoded id:secret>
zurück.curl --location --request GET 'https://<admin-host>:<admin-port>/oam/services/rest/ssa/api/v1/oauthpolicyadmin/client?identityDomainName=SampleDomain&name=SampleClientOld1' --header 'Authorization: <Basic Authz Header>' --header 'Accept: application/json'
Beschreibung der Abbildung get_old_client_post_modify.jpg
Das zurückgegebene Secret ist:
Basic U2FtcGxlQ2xpZW50T2xkMV9JZDpjbGllbnRfc2VjcmV0X25ldw==
Decodierter Wert für Basis 64:SampleClientOld1_Id:client_secret_new
-
Wenn die Konfiguration
ClientSecretRecoveryEnabled
auf "false" aktualisiert wird, gibt die GET OAuth-Client-API ein Hash Secret anstelle des codierten base64-Ergebnisses zurück. Dies ist das Verhalten des Bundle-Patches vor Oktober 2022.
Danksagungen
- Autoren: Salil Jain, Monica Sankar
- Mitwirkende: Oracle Access Management-Entwicklungsteam
Weitere Lernressourcen
Sehen Sie sich weitere Übungen unter docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning-Kanal YouTube zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Manage OAuth Client Secret Retrieval
F56933-01
October 2022
Copyright © 2022, Oracle and/or its affiliates.