Observação:

Ativar a Autenticação OAuth2 no Gateway de API do OCI para Chamar Serviços do OCI usando o OCI Functions e o OCI SDK

Introdução

Muitas vezes, precisamos de nossos aplicativos para consumir serviços REST da Oracle Cloud Infrastructure (OCI). Há várias maneiras de garantir a segurança entre os componentes, garantindo que o aplicativo possa ser autenticado com segurança no serviço de backend.

Essa tarefa é nativa no Oracle Cloud, pois há várias maneiras de proteger a rede e o acesso aos serviços existentes. Apenas algumas configurações e você está pronto. No entanto, há casos em que o aplicativo pode oferecer requisitos adicionais de segurança e conectividade. O caso de uso desse material atende a uma necessidade muito comum no cenário híbrido ou de várias nuvens (local conectado à Oracle Cloud ou Oracle Cloud conectado a outra nuvem).

Vamos apresentar o seguinte cenário:

Portanto, o tutorial fornece as seguintes soluções:

Objetivos

Pré-requisitos

Tarefa 1: Configurar OAuth2 com o Oracle Identity Cloud Service

  1. Obter os parâmetros do Gateway de API do OCI: Vamos começar a configurar o mecanismo OAuth2. Precisamos integrar sua instância do OCI API Gateway a um provedor de identidades configurando o Oracle Identity Cloud Service do Oracle Cloud para ser o provedor de identidades.

    Vá para a instância do Gateway de API do OCI e copie o Nome do Host. Essas informações serão usadas na configuração do servidor de recursos do Oracle Identity Cloud Service na próxima etapa.

    img.png

  2. Criar um Aplicativo de Recurso: Precisamos criar um autorizador OAuth2 para seu aplicativo. Podemos fazer isso com o Oracle Identity Cloud Service no Oracle Cloud.

    1. Na Console do OCI, vá para Identidade e Segurança e selecione Federação.

      img.png

    2. Clique em OracleIdentityCloudSevice.

      img.png

    3. Clique no link da instância do Oracle Identity Cloud Service.

      img.png

    4. Vamos criar dois aplicativos. Clique em Aplicativos e Serviços.

      img.png

    5. Nos Aplicativos, clique em Adicionar.

      img.png

    6. Selecione Aplicativo Confidencial para começar a configurar seu servidor de recursos.

      img.png

    7. Vamos configurar o primeiro aplicativo. Informe um Nome no aplicativo do servidor de recursos e clique em Próximo.

      img.png

    8. Clique em Ignorar para mais tarde. Precisamos configurar apenas o recurso.

      img.png

    9. Informe o nome do host do Gateway de API do OCI obtido na Etapa 1.

      img.png

    10. Clique em Adicionar Escopo e especifique as informações do escopo.

      img.png

    11. Revise as informações do escopo, clique em Próximo duas vezes e clique em Finalizar.

      img.png

    12. Clique em Ativar para ativar seu aplicativo.

      img.png

  3. Criar um Aplicativo Cliente.

    1. Em Aplicativos, clique em Adicionar.

      img.png

    2. Selecione Aplicativo Confidencial para começar a configurar seu servidor de recursos.

      img.png

    3. Informe um Nome para seu aplicativo e clique em Próximo.

      img_1.png

    4. Selecione Configurar o aplicativo como cliente agora para ativar as configurações do seu aplicativo cliente. Selecione Credenciais do Cliente, Asserção JWT e Em nome de.

      img.png

    5. Role para baixo na tela e clique em Adicionar Escopo.

      img.png

    6. Localize seu aplicativo de recursos criado antes (oauth_resource_server nesta tarefa) e clique em Adicionar.

      img.png

    7. Você pode ver seu escopo adicionado ao seu aplicativo. Clique em Próximo.

      img.png

      Observação: mantenha o valor do escopo. Você precisará usá-lo para solicitar um token.

    8. Ignore a janela Recursos e a janela Política da Camada Web. Em Autorização, selecione Impor Concessões como Autorização e clique em Finalizar.

      img.png

    9. Mantenha as informações do ID do Cliente e do Segredo do Cliente. Você precisará disso para obter seu token.

      img.png

    10. Clique em Ativar para ativar seu aplicativo e seu autorizador OAuth2 está pronto para teste.

      img_1.png

  4. Obter um Token: Agora podemos testar o autorizador OAuth2 para obter o token.

    1. Crie o URL do autorizador. Você pode obter isso obtendo seu URL do Oracle Identity Cloud Service no browser. No URL do Oracle Identity Cloud Service, você pode ver algo assim: https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/ui/v1/adminconsole.

    2. Você precisará do link do URL até oraclecloud.com, que é o ponto final raiz. Por exemplo, https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com.

    3. Precisamos adicionar o caminho de autenticação oAuth. Esse URL será executado como uma solicitação REST POST. Por exemplo, https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/oauth2/v1/token. Você precisará informar alguns parâmetros para solicitar o token.

    4. Digite as credenciais como uma Autenticação Básica, um ID do Cliente e um Segredo do Cliente.

      img.png

    5. No conteúdo Corpo, digite os valores grant_type e escopo. Lembre-se de que o escopo foi capturado na configuração do Oracle Identity Cloud Service.

      img.png

    6. Clique em Enviar, execute a solicitação POST e exiba o token.

      img_2.png

  5. Criar a Chave Web JSON (JWK): Em seu browser, digite o ponto final raiz do Oracle Identity Cloud Service adicionando /admin/v1/SigningCert/jwk para obter o JWK: https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/admin/v1/SigningCert/jwk

    Você receberá uma string JWK, conforme mostrado abaixo.

    img_2.png

    Precisamos trabalhar nessa string JWK.

    {"keys":[{"kty":"RSA","x5t#S256":"gHdIaH54tZt-b09W7_bTALX0DSj5t_Tsy6Wy2P1M_3E","e":"AQAB","x5t":"L_vneVBMiKA-ObXpNt8FZC4sRSY","kid":"SIGNING_KEY","x5c":["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"],"key_ops":["sig","encrypt"],"alg":"RS256","n":"khfJqiO57xMlci4mtvirEGoDfPflsLWQd3G0ZkQQlQK2QcraQRQPkaoP8Lo6KMKA-1mV1TxGfd9QMx9ONmtRL8RIWvt0543Fae6wPfRpaeIcDpknsHAovsTdQ9SwfqwhF7slDg4ciEJ7-gdpCJKMVQcnsiWBDPCoIC1xzB7KbGKrWvaPAmxx1hoM4etjPwBy8h_JvHMfDEF1GkrUtCDiLFPyGBLPv50hmyN6mnTu47lBhzIwzeZ4HqZLgrOdqdA6iSZrBxRzHDi1IWqoj87FYpztkWXnV7VkIN37RwrG6bFKOHGaYEydoF0LmI4pltssTxsdtLyN-Hr8fM402cs7Iw"}]}
    

    Observação:

    • Este JWK foi redigido.

    • Se receber uma mensagem de erro, você precisará fornecer acesso no Oracle Identity Cloud Service.

    img.png

    Alteração Importante na String JWK: A string JWK não será útil no Gateway de API do OCI até que você faça algumas alterações.

    1. Localize o segmento com "key_ops":["x","y","z"] e substitua por "use" : "sig". Vai parecer como mostrado abaixo (compare as duas cordas).

      {"keys":[{"kty":"RSA","x5t#S256":"gHdIaH54tZt-b09W7_bTALX0DSj5t_Tsy6Wy2P1M_3E","e":"AQAB","x5t":"L_vneVBMiKA-ObXpNt8FZC4sRSY","kid":"SIGNING_KEY","x5c":["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"],"use" : "sig","alg":"RS256","n":"khfJqiO57xMlci4mtvirEGoDfPflsLWQd3G0ZkQQlQK2QcraQRQPkaoP8Lo6KMKA-1mV1TxGfd9QMx9ONmtRL8RIWvt0543Fae6wPfRpaeIcDpknsHAovsTdQ9SwfqwhF7slDg4ciEJ7-gdpCJKMVQcnsiWBDPCoIC1xzB7KbGKrWvaPAmxx1hoM4etjPwBy8h_JvHMfDEF1GkrUtCDiLFPyGBLPv50hmyN6mnTu47lBhzIwzeZ4HqZLgrOdqdA6iSZrBxRzHDi1IWqoj87FYpztkWXnV7VkIN37RwrG6bFKOHGaYEydoF0LmI4pltssTxsdtLyN-Hr8fM402cs7Iw"}]}
      
    2. Remova a string {"keys":[ do início e ]} do final. A string final será semelhante à mostrada abaixo. Agora você pode usá-lo.

      {"kty":"RSA","x5t#S256":"gHdIaH54tZt-b09W7_bTALX0DSj5t_Tsy6Wy2P1M_3E","e":"AQAB","x5t":"L_vneVBMiKA-ObXpNt8FZC4sRSY","kid":"SIGNING_KEY","x5c":["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"],"use" : "sig","alg":"RS256","n":"khfJqiO57xMlci4mtvirEGoDfPflsLWQd3G0ZkQQlQK2QcraQRQPkaoP8Lo6KMKA-1mV1TxGfd9QMx9ONmtRL8RIWvt0543Fae6wPfRpaeIcDpknsHAovsTdQ9SwfqwhF7slDg4ciEJ7-gdpCJKMVQcnsiWBDPCoIC1xzB7KbGKrWvaPAmxx1hoM4etjPwBy8h_JvHMfDEF1GkrUtCDiLFPyGBLPv50hmyN6mnTu47lBhzIwzeZ4HqZLgrOdqdA6iSZrBxRzHDi1IWqoj87FYpztkWXnV7VkIN37RwrG6bFKOHGaYEydoF0LmI4pltssTxsdtLyN-Hr8fM402cs7Iw"}
      

Tarefa 2: Configurar um OCI Functions para chamar sua API do OCI SDK

  1. Entender o OCI Functions e o API Gateway: É uma prática recomendada expor seus serviços por meio de um Gateway de API. Muitas autenticações podem ser feitas ignorando as credenciais do Gateway de API para os serviços de backend, mas se a autenticação de backend não for o método apropriado para seu aplicativo cliente, poderemos fazer algumas configurações no nível do Gateway de API.

    Nesta etapa, vamos entender como o Gateway de API do OCI pode nos ajudar a integrar a autenticação OAuth2 e a solicitação de qualquer serviço do OCI, como a previsão de Implantação de Modelo do Data Science por meio do OCI Functions.

    O OCI Functions pode fazer o job para receber a solicitação do corpo e passar para o serviço OCI. Alguns serviços no serviço OCI não podem ser autenticados pelo método OAuth2; portanto, podemos fazer isso com o OCI Functions.

    Neste exemplo, o serviço de previsão de Implantação de Modelo pode ser autenticado pela chave Privada do OCI no OCI IAM. Isso pode ser feito pelo Controlador de Recursos.

    Se você não souber como criar e implantar um OCI Functions, consulte Início Rápido do OCI Functions

  2. Entender o Código: Este código será preparado para ser usado com o Gateway de API do OCI. Na sua implantação de API, configuraremos o ponto final de Implantação de Modelo no Gateway de API e ele será informado como um parâmetro HEADER. Portanto, você pode usar essa função para muitas Implantações de Modelo em cada implantação do Gateway de API de que precisa.

    img_3.png

    • Usaremos a biblioteca oracle.ads no Python para autorizar pelo Controlador de Recursos o acesso dessa função à instância de Implantação de Modelo (consulte a tarefa 4).

      ads.set_auth('resource_principal')
      
    • O conteúdo do corpo pode ser capturado por esta linha.

      body = json.loads(data.getvalue())
      
    • Configuraremos um HEADER denominado model_deployment no Gateway de API do OCI. Este HEADER contém o URL da previsão de Implantação de Modelo transmitida na solicitação do Gateway de API.

      endpoint = ctx.Headers()["model_deployment"]
      
    • Isso executará a solicitação POST da API REST e retornará o resultado da Implantação de Modelo no ponto final do serviço Data Science.

      return requests.post(endpoint, json=body, auth=ads.common.auth.default_signer()['signer']).json()
      
    • Esta é a biblioteca requirements.txt que precisará ser carregada nesta função.

      requirements.txt
      ---------------------
      fdk>=0.1.54
      requests
      oracle-ads
      

    Implante seu OCI Functions e vamos configurá-lo no OCI API Gateway.

Tarefa 3: Configurar uma Autenticação de Implantação do Gateway de API

Observação: para obter mais informações sobre como desenvolver um OCI Functions e chamá-lo no OCI API Gateway, consulte Chamar um OCI Functions usando o API Gateway.

  1. Selecione OAuth 2.0 / OpenID Connect e informe a configuração a seguir. Essa é a maneira padrão de autenticação por meio do HEADER.

    Token Location: Header
    JWT token header name: Authorization
    Authentication scheme: Bearer
    
  2. Digite a string Chave Web JSON criada anteriormente, selecione Chaves estáticas e digite as informações a seguir.

    Key ID: SIGNING_KEY
    Key format: JSON web key
    JSON web key: <Your JWK string created previously>
    
  3. Informe os Emissores como https://identity.oraclecloud.com/ e Públicos-alvo com o nome de host do Gateway de API do OCI obtido anteriormente.

    img.png

    Configure suas Funções do OCI criadas na última tarefa.

    img_1.png

  4. Configure o parâmetro HEADER model_deployment e clique em Mostrar políticas de solicitação de rota.

    img_5.png

  5. Nas transformações HEADER, clique em Adicionar.

    img_2.png

  6. Você deve ter o URL de previsão de Implantação de Modelo do Data Science. Você pode obter isso aqui: vá para o menu Data Science, selecione sua instância do Data Science e sua implantação de modelo e clique em Chamando seu modelo.

    Observação: Salve seu OCID de Implantação de Modelo aqui. Você precisará configurar as políticas posteriormente.

    img_3.png

    Seu URL de previsão de Implantação de Modelo do Data Science.

    img_4.png

  7. Informe o nome do cabeçalho como model_deployment e os valores como o URL de previsão de Implantação de Modelo do Data Science.

    img_3.png

    img_4.png

    Observação: Depois de salvar sua implantação do Gateway de API, lembre-se do ponto final da implantação de API.

    img_2.png

Tarefa 4: Configurar o Grupo e as Políticas do OCI

Crie um grupo dinâmico para conceder acesso do OCI Functions ao seu recurso do OCI. Neste tutorial, estamos usando a Implantação de Modelo do Serviço Data Science. Para obter mais informações sobre como usar o Controlador de Recursos, consulte Controlador de Recursos.

  1. Obtenha o OCID da sua instância de Implantação de Modelo. Digite o OCID na string de grupo dinâmico.

    ALL {resource.type = 'fnfunc', resource.id = 'ocid1.datasciencemodeldeployment.oc1.sa-saopaulo-1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'}
    

    Observação: resource.id é o OCID obtido anteriormente na tela da console de Implantação de Modelo.

    img_4.png

  2. Crie uma política para permitir seu grupo dinâmico. Para obter mais informações, consulte Políticas de Implantação de Modelo.

    allow dynamic-group hoshikawa_datascience to {DATA_SCIENCE_MODEL_DEPLOYMENT_PREDICT} in tenancy
    allow dynamic-group hoshikawa_datascience to manage data-science-model-deployments in tenancy
    

    img_4.png

Tarefa 5: Testar API

Agora, vamos simular a solicitação OAuth2 do seu aplicativo para o serviço de Implantação de Modelo no OCI Data Science.

  1. Obtenha o token que informa o ID do Cliente e o Segredo do Cliente ao seu provedor do Oracle Identity Cloud Service.

    img_2.png

  2. Informe o ponto final de implantação do OCI API Gateway e selecione a solicitação REST POST. Copie o valor access_token e passe para sua implantação do OCI API Gateway. Lembre-se de que seu token tem uma duração de uma hora.

    img_5.png

    E aqui está o resultado!

    img.png

Agradecimentos

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. 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.