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

Aufgabe 1: Recovery des OAM-Client-Secrets OAuth aktivieren

  1. 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>'
    

    Beschreibung der Abbildung config_does_not_exist.jpg

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

  1. Erstellen Sie den Client mit den folgenden Attributen.

    • Clientname: SampleClientNew1
    • Client-ID: SampleClientNew1_id
    • Secret: client_secret
  2. 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

    Beschreibung der Abbildung get_new_client.jpg

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.

  1. Erstellen Sie den Client mit den folgenden Attributen.

    • Clientname: SampleClientOld1
    • Client-ID: SampleClientOld1_id
    • Secret: client_secret
  2. 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.

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

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

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

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.