Gerenciar Recuperação de Segredo do Cliente OAuth

Introdução

Usando o Oracle Access Management (OAM), você pode criar clientes OAuth que são usados para interagir com provedores e aplicativos OAuth. Por padrão, o segredo do cliente OAuth uma vez criado é armazenado com hash e não é utilizável, ou seja, não pode ser recuperado. A partir do Patch de Pacote de Outubro de 2022, você pode recuperar o segredo de um cliente OAuth em uma forma utilizável. Os administradores devem ativar o recurso de recuperação do cliente OAuth para recuperar o segredo do cliente. Os clientes OAuth mais antigos que foram criados antes do patch devem ser atualizados/redefinidos para que o segredo possa ser recuperado. Se o recurso de recuperação de segredo do Cliente OAuth estiver desativado, a API GET do Cliente OAuth retornará segredo em formato hash (não utilizável), mesmo após a aplicação de outubro de 2022 BP.

Objetivos

Configure o Serviço OAuth no Oracle Access Management.

Pré-requisitos

Tarefa 1: Ativar recuperação de segredo do cliente OAuth do OAM

  1. Dependendo da configuração, você pode desativar esse recurso. Se a configuração não estiver presente, o OAM presume que o recurso está desativado. Caminho de Definição de Configuração: /DeployedComponent/Server/NGAMServer/Profile/ssoengine/OAuthConfig Nome da Definição de Configuração: ClientSecretRecoveryEnabled O comando a seguir permite determinar se a Recuperação Secreta do Cliente está ativada ou desativada.

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

    Descrição da ilustração config_does_not_exist.jpg

  2. Se a configuração não estiver presente ou estiver desativada (falso), execute o comando a seguir para adicionar/atualizar o valor para verdadeiro. Observação: ignore essa etapa se o valor já existir e for definido como verdadeiro.

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

    Descrição da ilustração updating_config_to_true.jpg

    Verifique se o valor foi atualizado com sucesso usando a API GET na Etapa 1.

Tarefa 2: Recuperar detalhes do cliente OAuth - Para cliente recém-criado

Quando o recurso Recuperação de Segredo estiver ativado em um cliente, a API do cliente GET retornará o segredo no formato Basic <base64 encoded id:secret>.

  1. Crie o cliente com os atributos a seguir.

    • nome do cliente: SampleClientNew1
    • id do cliente: SampleClientNew1_id
    • segredo: client_secret
  2. Recupere os detalhes do cliente usando a API do 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'
    

    O segredo retornado é: Basic U2FtcGxlQ2xpZW50TmV3MV9JZDpjbGllbnRfc2VjcmV0 O valor Decodificado da Base 64 é: SampleClientNew1_Id:client_secret

    Descrição da ilustração get_new_client.jpg

Tarefa 3: Recuperar detalhes do cliente OAuth - Para um cliente existente

Para um cliente que foi criado antes da ativação do recurso de recuperação de segredo, o segredo não é recuperável, a menos que o recurso seja redefinido/atualizado. A API do Cliente GET retorna uma mensagem para redefinir o recurso para recuperar o valor.

  1. Crie o cliente com os atributos a seguir.

    • nome do cliente: SampleClientOld1
    • id do cliente: SampleClientOld1_id
    • segredo: client_secret
  2. Recupere os detalhes do cliente usando a API do 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'    
    
    

    Descrição da ilustração get_old_client.jpg

    A mensagem é: OAMSSA-06399: O segredo atual não é recuperável. Redefina o segredo para torná-lo recuperável.

  3. Atualize o segredo do cliente usando a API do 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"  }'
    

    Descrição da ilustração client_secret_modify.jpg

    Novo segredo: client_secret_new

  4. Recupere os detalhes atualizados do cliente usando a API do Cliente OAuth. A API do Cliente GET retornará o segredo no 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'
    
    

    Descrição da ilustração get_old_client_post_modify.jpg

    O segredo retornado é: Basic U2FtcGxlQ2xpZW50T2xkMV9JZDpjbGllbnRfc2VjcmV0X25ldw== O valor Decodificado da Base 64 é: SampleClientOld1_Id:client_secret_new

  5. Se a configuração ClientSecretRecoveryEnabled for atualizada como falsa, a API do Cliente GET OAuth retornará um segredo hash, em vez do resultado codificado em base64, que é o comportamento anterior ao Patch do Pacote de Outubro de 2022.

Agradecimentos

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.