Gestionar recuperación de secreto de cliente OAuth

Introducción

Con Oracle Access Management (OAM), puede crear clientes OAuth que se utilizan para interactuar con aplicaciones y proveedores OAuth. Por defecto, el secreto de cliente OAuth, una vez creado, se almacena hash y no se puede utilizar, es decir, no se puede recuperar. A partir del paquete de parches de octubre de 2022, puede recuperar el secreto de un cliente OAuth en formato utilizable. Los administradores deben activar la función de recuperación de cliente OAuth para recuperar el secreto de cliente. Los clientes OAuth anteriores que se crearon antes del parche se deben actualizar/restablecer para poder recuperar el secreto. Si la función de recuperación de secreto de cliente OAuth está desactivada, la API GET de cliente OAuth devolverá el secreto en formato hash (no utilizable) incluso después de aplicar el BP de octubre de 2022.

Objetivos

Configure el servicio OAuth en Oracle Access Management.

Requisitos

Tarea 1: Activar la recuperación del secreto de cliente OAM OAuth

  1. Según la configuración, puede activar o desactivar esta función. Si la configuración no está presente, OAM asume que la función está desactivada. Ruta de configuración: /DeployedComponent/Server/NGAMServer/Profile/ssoengine/OAuthConfig Nombre de configuración: ClientSecretRecoveryEnabled El siguiente comando le permite determinar si la recuperación del secreto de cliente está activada o desactivada.

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

    Descripción de la ilustración config_does_not_exist.jpg

  2. Si la configuración no está presente o está desactivada (falso), ejecute el siguiente comando para agregar o actualizar el valor a true. Nota: Omita este paso si el valor ya existe y está definido en true.

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

    Descripción de la ilustración updating_config_to_true.jpg

    Verifique que el valor se ha actualizado correctamente mediante la API de GET en el paso 1.

Tarea 2: recuperar los detalles del cliente OAuth - Para el cliente recién creado

Cuando la función Recuperación de secreto está activada en un cliente, la API de cliente GET devolverá el secreto con el formato Basic <base64 encoded id:secret>.

  1. Cree el cliente con los siguientes atributos.

    • nombre de cliente: SampleClientNew1
    • ID de cliente: SampleClientNew1_id
    • secreto: client_secret
  2. Recupere los detalles del cliente mediante la API de cliente OAuth.

    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'
    

    El secreto devuelto es: Basic U2FtcGxlQ2xpZW50TmV3MV9JZDpjbGllbnRfc2VjcmV0 El valor de base 64 descodificado es: SampleClientNew1_Id:client_secret

    Descripción de la ilustración get_new_client.jpg

Tarea 3: recuperar los detalles del cliente OAuth para un cliente existente

Para un cliente creado antes de activar la función de recuperación de secretos, el secreto no se puede recuperar a menos que la función se restablezca o actualice. La API de GET Client devuelve un mensaje para restablecer la función y recuperar el valor.

  1. Cree el cliente con los siguientes atributos.

    • nombre de cliente: SampleClientOld1
    • ID de cliente: SampleClientOld1_id
    • secreto: client_secret
  2. Recupere los detalles del cliente mediante la API de cliente OAuth.

    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'    
    
    

    Descripción de la ilustración get_old_client.jpg

    El mensaje indica: OAMSSA-06399: el secreto actual no se puede recuperar. Restablezca el secreto para que sea recuperable.

  3. Actualice el secreto de cliente mediante la API de cliente OAuth.

    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"  }'
    

    Descripción de la ilustración client_secret_modify.jpg

    Nuevo secreto: client_secret_new

  4. Recupere los detalles actualizados del cliente mediante la API de cliente OAuth. La API de GET Client devolverá el secreto con el formato Basic <base64 encoded id:secret>.

    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'
    
    

    Descripción de la ilustración get_old_client_post_modify.jpg

    El secreto devuelto es: Basic U2FtcGxlQ2xpZW50T2xkMV9JZDpjbGllbnRfc2VjcmV0X25ldw== El valor de base 64 descodificado es: SampleClientOld1_Id:client_secret_new

  5. Si la configuración ClientSecretRecoveryEnabled se actualiza a false, la API de cliente GET OAuth devolverá un secreto hash en lugar de un resultado codificado base64, que es el comportamiento anterior al parche de paquete de octubre de 2022.

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre el producto, visite Oracle Help Center.