Note:

Activar la autenticación OAuth2 en OCI API Gateway para llamar a servicios de OCI mediante OCI Functions y OCI SDK

Introducción

A menudo necesitamos que nuestras aplicaciones consuman servicios REST de Oracle Cloud Infrastructure (OCI). Hay varias formas de garantizar la seguridad entre los componentes, lo que garantiza que la aplicación se pueda autenticar de forma segura en el servicio de backend.

Esta tarea es nativa de Oracle Cloud, ya que hay varias formas de proteger la red y acceder a los servicios existentes. Solo unos pocos ajustes y ya está. Sin embargo, hay casos en los que la aplicación puede ofrecer requisitos de seguridad y conectividad adicionales. El caso de uso de este material satisface una necesidad muy común en el escenario híbrido o multinube (local conectado a Oracle Cloud u Oracle Cloud conectado a otra nube).

Vamos a presentar el siguiente escenario:

Por lo tanto, el tutorial proporciona las siguientes soluciones:

Objetivos

Requisitos

Tarea 1: Configurar OAuth2 con Oracle Identity Cloud Service

  1. Obtenga los parámetros de OCI API Gateway: comencemos a configurar el mecanismo OAuth2. Necesitamos integrar su instancia de OCI API Gateway en un proveedor de identidad configurando Oracle Identity Cloud Service desde Oracle Cloud para que sea el proveedor de identidad.

    Vaya a la instancia de OCI API Gateway y copie el nombre de host. Esta información se utilizará en la configuración del servidor de recursos de Oracle Identity Cloud Service en el siguiente paso.

    img.png

  2. Crear una aplicación de recurso: necesitamos crear un autorizador OAuth2 para la aplicación. Podemos hacerlo con Oracle Identity Cloud Service en Oracle Cloud.

    1. En la consola de OCI, vaya a Identidad y seguridad y seleccione Federación.

      img.png

    2. Haga clic en OracleIdentityCloudSevice.

      img.png

    3. Haga clic en el enlace de su instancia de Oracle Identity Cloud Service.

      img.png

    4. Crearemos dos aplicaciones. Haga clic en Aplicaciones y Servicios.

      img.png

    5. En las aplicaciones, haga clic en Agregar.

      img.png

    6. Seleccione Aplicación Confidencial para empezar a configurar el servidor de recursos.

      img.png

    7. Configuraremos la primera aplicación. Introduzca un nombre en la aplicación del servidor de recursos y haga clic en Siguiente.

      img.png

    8. Haga clic en Omitir para más tarde. Solo necesitamos configurar el recurso.

      img.png

    9. Introduzca el nombre de host de OCI API Gateway obtenido en el paso 1.

      img.png

    10. Haga clic en Agregar Ámbito e introduzca la información del ámbito.

      img.png

    11. Revise la información de ámbito, haga clic en Siguiente dos veces y haga clic en Terminar.

      img.png

    12. Haga clic en Activar para activar la aplicación.

      img.png

  3. Cree una aplicación cliente.

    1. En Aplicaciones, haga clic en Agregar.

      img.png

    2. Seleccione Aplicación Confidencial para empezar a configurar el servidor de recursos.

      img.png

    3. Introduzca un nombre para la aplicación y haga clic en Siguiente.

      img_1.png

    4. Seleccione Configurar la aplicación como un cliente ahora para activar las configuraciones de la aplicación cliente. Seleccione Credenciales de cliente, Afirmación de JWT y En nombre de.

      img.png

    5. Haga clic en Add Scope (Agregar ámbito).

      img.png

    6. Busque la aplicación de recursos creada antes (oauth_resource_server en esta tarea) y haga clic en Agregar.

      img.png

    7. Puede ver el ámbito agregado a la aplicación. Haga clic en Siguiente.

      img.png

      Nota: Mantenga el valor de ámbito que deberá utilizar para solicitar un token.

    8. Omita la ventana Recursos y la ventana Política de capa web. En Autorización, seleccione Aplicar permisos como autorización y haga clic en Terminar.

      img.png

    9. Mantenga la información del ID de cliente y el secreto de cliente. Necesitará esto para obtener su token.

      img.png

    10. Haga clic en Activar para activar la aplicación y el autorizador OAuth2 esté listo para la prueba.

      img_1.png

  4. Obtener un token: ahora podemos probar el autorizador OAuth2 para obtener el token.

    1. Redacte la URL para el autorizador. Para ello, obtenga la URL de Oracle Identity Cloud Service en el explorador. En la URL de Oracle Identity Cloud Service, puede ver algo como esto: https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/ui/v1/adminconsole.

    2. Necesitará el enlace URL hasta oraclecloud.com, que es el punto final raíz. Por ejemplo, https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com.

    3. Necesitamos agregar la ruta de autenticación oAuth. Esta URL se ejecutará como una solicitud REST POST. Por ejemplo, https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/oauth2/v1/token. Deberá introducir algunos parámetros para solicitar el token.

    4. Introduzca las credenciales como Autenticación básica, ID de cliente y Secreto de cliente.

      img.png

    5. En el contenido Cuerpo, introduzca los valores grant_type y Ámbito. Recuerde que el ámbito se capturó en la configuración de Oracle Identity Cloud Service.

      img.png

    6. Haga clic en Enviar, ejecute la solicitud POST y vea el token.

      img_2.png

  5. Crear la clave web JSON (JWK): en el explorador, introduzca el punto final raíz de Oracle Identity Cloud Service agregando /admin/v1/SigningCert/jwk para obtener el JWK: https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/admin/v1/SigningCert/jwk

    Recibirá una cadena JWK como se muestra a continuación.

    img_2.png

    Necesitamos trabajar en esta cadena 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"}]}
    

    Nota:

    • Este JWK fue redactado.

    • Si recibe un mensaje de error, debe proporcionar acceso en Oracle Identity Cloud Service.

    img.png

    Cambio importante en la cadena JWK: la cadena JWK no será útil en el gateway de API de OCI hasta que realice algunos cambios.

    1. Busque el segmento con "key_ops":["x","y","z"] y sustitúyalo por "use" : "sig". Se verá como se muestra a continuación (compare las dos cadenas).

      {"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. Elimine la cadena {"keys":[ del principio y ]} del final. La cadena final se verá como se muestra a continuación. Ahora puedes usarlo.

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

Tarea 2: Configuración de OCI Functions para llamar a la API de SDK de OCI

  1. Descripción de OCI Functions y API Gateway: se recomienda exponer los servicios a través de un gateway de API. Se pueden realizar muchas autenticaciones omitiendo las credenciales del gateway de API a los servicios de backend, pero si la autenticación de backend no era el método adecuado para la aplicación cliente, podemos realizar algunas configuraciones a nivel de gateway de API.

    En este paso, veamos cómo OCI API Gateway puede ayudarnos a integrar la autenticación OAuth2 y la solicitud de cualquier servicio de OCI, como la predicción Data Science Model Deployment a través de OCI Functions.

    OCI Functions puede realizar el trabajo para recibir la solicitud de cuerpo y transferirla al servicio OCI. Algunos servicios del servicio OCI no se pueden autenticar mediante el método OAuth2, por lo que podemos hacerlo con OCI Functions.

    En este ejemplo, el servicio de predicción Despliegue de modelo puede autenticarse mediante la clave privada de OCI en OCI IAM. La puede realizar la principal de recurso.

    Si no sabe cómo crear y desplegar OCI Functions, consulte Inicio rápido de OCI Functions

  2. Descripción del código: este código estará preparado para su uso con OCI API Gateway. En su despliegue de API, configuraremos el punto final de despliegue de modelo en API Gateway y se transferirá como parámetro HEADER. Por lo tanto, puede utilizar esta función para muchos despliegues de modelo en cada despliegue de API Gateway que necesite.

    img_3.png

    • Utilizaremos la biblioteca oracle.ads en Python para autorizar mediante la principal de recurso el acceso de esta función a la instancia de despliegue de modelo (consulte la tarea 4).

      ads.set_auth('resource_principal')
      
    • Esta línea puede capturar el contenido del cuerpo.

      body = json.loads(data.getvalue())
      
    • Configuraremos un HEADER denominado model_deployment en el gateway de API de OCI. Este HEADER contiene la URL para la predicción de despliegue de modelo transferida en la solicitud de gateway de API.

      endpoint = ctx.Headers()["model_deployment"]
      
    • Esto ejecutará la solicitud POST de la API de REST y devolverá el resultado del despliegue de modelo en el punto final de Data Science.

      return requests.post(endpoint, json=body, auth=ads.common.auth.default_signer()['signer']).json()
      
    • Esta es la biblioteca requirements.txt que se tendrá que cargar en esta función.

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

    Despliegue sus funciones de OCI y configúrelo en el gateway de API de OCI.

Tarea 3: Configuración de una autenticación de despliegue de API Gateway

Nota: Para obtener más información sobre cómo desarrollar OCI Functions y llamarla en OCI API Gateway, consulte Llamada a OCI Functions mediante API Gateway.

  1. Seleccione OAuth 2.0 / OpenID Connect e introduzca la siguiente configuración. Esta es la forma predeterminada de autenticarse a través de HEADER.

    Token Location: Header
    JWT token header name: Authorization
    Authentication scheme: Bearer
    
  2. Introduzca la cadena de clave web JSON creada anteriormente, seleccione Claves estáticas e introduzca la siguiente información.

    Key ID: SIGNING_KEY
    Key format: JSON web key
    JSON web key: <Your JWK string created previously>
    
  3. Introduzca los emisores como https://identity.oraclecloud.com/ y los públicos con el nombre de host de gateway de API de OCI obtenido anteriormente.

    img.png

    Configure las funciones de OCI creadas en la última tarea.

    img_1.png

  4. Configure el parámetro HEADER model_deployment y haga clic en Mostrar políticas de solicitud de ruta.

    img_5.png

  5. En Transformaciones HEADER, haga clic en Agregar.

    img_2.png

  6. Debe tener la URL de predicción de despliegue de modelo de Data Science. Puede obtener esta información aquí: vaya al menú Data Science, seleccione la instancia de Data Science y el despliegue del modelo y haga clic en Llamando al modelo.

    Nota: Guarde el OCID de despliegue de modelo aquí. Tendrá que configurar las políticas más adelante.

    img_3.png

    URL de predicción de despliegue de modelos de Data Science.

    img_4.png

  7. Introduzca el nombre de cabecera como model_deployment y los valores como URL de predicción de despliegue de modelo de Data Science.

    img_3.png

    img_4.png

    Nota: Después de guardar el despliegue de API Gateway, recuerde el punto final de despliegue de API.

    img_2.png

Tarea 4: Configuración del grupo y las políticas de OCI

Cree un grupo dinámico para otorgar acceso desde OCI Functions al recurso de OCI. En este tutorial, estamos utilizando el despliegue del modelo de Data Science. Para obtener más información sobre cómo utilizar la entidad de recurso, consulte Principal de recurso.

  1. Obtenga el OCID de la instancia de Despliegue de modelo. Introduzca el OCID en la cadena de grupo dinámico.

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

    Nota: resource.id es el OCID obtenido anteriormente en la pantalla de la consola Despliegue de modelo.

    img_4.png

  2. Cree una política para permitir el grupo dinámico. Para obtener más información, consulte Políticas de despliegue 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

Tarea 5: API de prueba

Ahora, simulemos la solicitud OAuth2 de la aplicación para el servicio Model Deployment en OCI Data Science.

  1. Obtenga el token que transfiere el ID de cliente y el Secreto de cliente al proveedor de Oracle Identity Cloud Service.

    img_2.png

  2. Introduzca el punto final de despliegue de OCI API Gateway y seleccione la solicitud REST POST. Copie el valor access_token y transfiera al despliegue de OCI API Gateway. Recuerde que el token tiene una duración de una hora.

    img_5.png

    ¡Y aquí está el resultado!

    img.png

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 Oracle Learning Explorer.

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