Remarques :

Activation de l'authentification OAuth2 dans OCI API Gateway pour appeler des services OCI à l'aide d'OCI Functions et du kit SDK OCI

Introduction

Nous avons souvent besoin de nos applications pour utiliser des services REST Oracle Cloud Infrastructure (OCI). Il existe plusieurs façons de garantir la sécurité entre les composants, afin que l'application puisse s'authentifier en toute sécurité sur le service back-end.

Cette tâche est native dans Oracle Cloud, car il existe plusieurs façons de sécuriser le réseau et d'accéder aux services existants. Quelques réglages et vous avez terminé. Toutefois, dans certains cas, l'application peut offrir des exigences supplémentaires en matière de sécurité et de connectivité. Le cas d'utilisation de ce matériel répond à un besoin très courant dans le scénario hybride ou multi-cloud (sur site connecté à Oracle Cloud, ou Oracle Cloud connecté à un autre cloud).

Présentons le scénario suivant :

Par conséquent, le tutoriel fournit les solutions suivantes :

Objectifs

Prérequis

Tâche 1 : configurer OAuth2 avec Oracle Identity Cloud Service

  1. Obtention des paramètres d'OCI API Gateway : commençons à configurer le mécanisme OAuth2. Nous devons intégrer votre instance OCI API Gateway à un fournisseur d'identités en configurant Oracle Identity Cloud Service à partir d'Oracle Cloud en tant que fournisseur d'identités.

    Accédez à l'instance OCI API Gateway et copiez le nom d'hôte. Ces informations seront utilisées dans la configuration de votre serveur de ressources Oracle Identity Cloud Service à l'étape suivante.

    img.png

  2. Création d'une application de ressource : nous devons créer un autorisateur OAuth2 pour votre application. Nous pouvons y parvenir avec Oracle Identity Cloud Service dans Oracle Cloud.

    1. Dans la console OCI, accédez à Identité et sécurité et sélectionnez Fédération.

      img.png

    2. Cliquez sur OracleIdentityCloudSevice.

      img.png

    3. Cliquez sur le lien vers votre instance Oracle Identity Cloud Service.

      img.png

    4. Nous allons créer deux applications. Cliquez sur Applications et services.

      img.png

    5. Dans les applications, cliquez sur Ajouter.

      img.png

    6. Sélectionnez Application confidentielle pour commencer à configurer le serveur de ressources.

      img.png

    7. Nous allons configurer la première application. Entrez un nom dans l'application de serveur de ressources, puis cliquez sur Suivant.

      img.png

    8. Cliquez sur Ignorer plus tard. Nous devons configurer la ressource uniquement.

      img.png

    9. Entrez le nom d'hôte OCI API Gateway obtenu à l'étape 1.

      img.png

    10. Cliquez sur Ajouter une portée et entrez les informations sur la portée.

      img.png

    11. Vérifiez les informations de portée, cliquez deux fois sur Suivant et cliquez sur Terminer.

      img.png

    12. Cliquez sur Activer pour activer l'application.

      img.png

  3. Création d'une application client.

    1. Dans Applications, cliquez sur Ajouter.

      img.png

    2. Sélectionnez Application confidentielle pour commencer à configurer le serveur de ressources.

      img.png

    3. Entrez un nom pour votre application, puis cliquez sur Suivant.

      img_1.png

    4. Sélectionnez Configurer l'application comme client maintenant pour activer les configurations pour votre application client. Sélectionnez Informations d'identification client, Assertion JWT et Au nom de.

      img.png

    5. Accédez à l'écran et cliquez sur Add Scope.

      img.png

    6. Recherchez l'application de ressource créée précédemment (oauth_resource_server dans cette tâche) et cliquez sur Ajouter.

      img.png

    7. Vous pouvez voir votre portée ajoutée à votre application. Fournissez les informations relatives au jeu de transport, puis cliquez sur Suivant.

      img.png

      Remarque : conservez la valeur de portée. Vous devrez l'utiliser pour demander un jeton.

    8. Ignorez les fenêtres Ressources et Stratégie de niveau Web. Dans Autorisation, sélectionnez Imposer les autorisations en tant qu'autorisation et cliquez sur Terminer.

      img.png

    9. Conservez l'ID client et la clé secrète client. Vous en aurez besoin pour obtenir votre jeton.

      img.png

    10. Cliquez sur Activer pour activer l'application et l'autorisation OAuth2 est prête à être testée.

      img_1.png

  4. Obtenir un jeton : nous pouvons maintenant tester l'autorisateur OAuth2 pour obtenir le jeton.

    1. Composez l'URL de l'autorisateur. Pour ce faire, vous pouvez obtenir votre URL Oracle Identity Cloud Service dans le navigateur. Dans l'URL Oracle Identity Cloud Service, vous pouvez voir quelque chose comme ceci : https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/ui/v1/adminconsole.

    2. Vous aurez besoin du lien URL jusqu'à oraclecloud.com, qui est l'adresse racine. Par exemple, https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com.

    3. Nous devons ajouter le chemin d'authentification oAuth. Cette URL sera exécutée en tant que demande REST POST. Par exemple, https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/oauth2/v1/token. Vous devrez entrer certains paramètres pour demander le jeton.

    4. Entrez les informations d'identification en tant qu'authentification de base, ID client et clé secrète client.

      img.png

    5. Dans le contenu Corps, entrez les valeurs grant_type et Portée. N'oubliez pas que la portée a été capturée dans la configuration Oracle Identity Cloud Service.

      img.png

    6. Cliquez sur Envoyer, exécutez la demande POST et affichez le jeton.

      img_2.png

  5. Créer la clé Web JSON : dans votre navigateur, entrez l'adresse Oracle Identity Cloud Service racine en ajoutant /admin/v1/SigningCert/JWK pour obtenir la clé JWK : https://idcs-xxxxxxxxxxxxx.identity.oraclecloud.com/admin/v1/SigningCert/JWK

    Vous recevrez une chaîne JWK comme indiqué ci-dessous.

    img_2.png

    Nous devons travailler sur cette chaîne 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"}]}
    

    Remarque :

    • Ce JWK a été occulté.

    • Si vous recevez un message d'erreur, vous devez fournir l'accès dans Oracle Identity Cloud Service.

    img.png

    Modification importante de la chaîne JWK : la chaîne JWK ne sera pas utile dans OCI API Gateway tant que vous n'aurez pas apporté de modifications.

    1. Recherchez le segment avec "key_ops" :["x","y","z"] et remplacez-le par "use" : "sig". Il ressemblera à ce qui suit (comparer les deux chaînes).

      {"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. Enlevez la chaîne {"keys":[ du début et ]} de la fin. La chaîne finale ressemblera à ce qui suit. Vous pouvez maintenant l'utiliser.

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

Tâche 2 : configurer des fonctions OCI pour appeler l'API de kit SDK OCI

  1. Comprendre OCI Functions et API Gateway : il est recommandé d'exposer vos services via une passerelle d'API. De nombreuses authentifications peuvent être effectuées en contournant les informations d'identification de la passerelle d'API aux services back-end. Toutefois, si l'authentification back-end n'était pas la méthode appropriée pour votre application client, nous pouvons effectuer certaines configurations au niveau de la passerelle d'API.

    Cette étape nous permet de comprendre comment OCI API Gateway peut nous aider à intégrer l'authentification OAuth2 et la demande pour n'importe quel service OCI, comme la prédiction de déploiement de modèle Data Science via OCI Functions.

    OCI Functions peut effectuer le travail pour recevoir la demande de corps et la transmettre au service OCI. Certains services du service OCI ne peuvent pas s'authentifier par la méthode OAuth2. Nous pouvons donc le faire avec OCI Functions.

    Dans cet exemple, le service de prédiction de déploiement de modèle peut s'authentifier par la clé privée OCI dans OCI IAM. Elle peut être effectuée par le principal de ressource.

    Si vous ne savez pas comment créer et déployer des fonctions OCI, reportez-vous à Démarrage rapide des fonctions OCI.

  2. Comprendre le code : ce code sera prêt à être utilisé avec OCI API Gateway. Dans votre déploiement d'API, nous allons configurer l'adresse de déploiement de modèle dans la passerelle d'API et elle sera transmise en tant que paramètre HEADER. Vous pouvez donc utiliser cette fonction pour de nombreux déploiements de modèle dans chaque déploiement API Gateway dont vous avez besoin.

    img_3.png

    • Nous utiliserons la bibliothèque oracle.ads dans Python pour autoriser par principal de ressource l'accès de cette fonction à l'instance de déploiement de modèle (reportez-vous à la tâche 4).

      ads.set_auth('resource_principal')
      
    • Le contenu du corps peut être capturé par cette ligne.

      body = json.loads(data.getvalue())
      
    • Nous allons configurer un EN-tête nommé model_deployment dans OCI API Gateway. Ce HEADER contient l'URL de la prédiction de déploiement de modèle transmise dans la demande API Gateway.

      endpoint = ctx.Headers()["model_deployment"]
      
    • Cette opération exécute la demande POST d'API REST et renvoie le résultat du déploiement de modèle dans l'adresse Data Science.

      return requests.post(endpoint, json=body, auth=ads.common.auth.default_signer()['signer']).json()
      
    • Il s'agit de la bibliothèque requirements.txt qui devra être chargée dans cette fonction.

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

    Déployez les fonctions OCI et configurons-les dans la passerelle d'API OCI.

Tâche 3 : configurer une authentification de déploiement API Gateway

Remarque : pour plus d'informations sur le développement d'OCI Functions et son appel dans OCI API Gateway, reportez-vous à Appel d'OCI Functions à l'aide d'API Gateway.

  1. Sélectionnez OAuth 2.0 / OpenID Connect et entrez la configuration suivante. Il s'agit du mode d'authentification par défaut via HEADER.

    Token Location: Header
    JWT token header name: Authorization
    Authentication scheme: Bearer
    
  2. Entrez la chaîne de clé Web JSON créée précédemment, sélectionnez Clés statiques et entrez les informations suivantes.

    Key ID: SIGNING_KEY
    Key format: JSON web key
    JSON web key: <Your JWK string created previously>
    
  3. Entrez les émetteurs en tant que https://identity.oraclecloud.com/ et les audiences avec le nom d'hôte OCI API Gateway obtenu précédemment.

    img.png

    Configurez les fonctions OCI créées dans la dernière tâche.

    img_1.png

  4. Configurez le paramètre HEADER model_deployment, puis cliquez sur Afficher les stratégies de demande de routage.

    img_5.png

  5. Dans les transformations HEADER, cliquez sur Ajouter.

    img_2.png

  6. Vous devez disposer de l'URL de prédiction de déploiement de modèle Data Science. Vous pouvez l'obtenir ici : accédez au menu Data Science, sélectionnez votre instance Data Science et votre déploiement de modèle, puis cliquez sur Appeler votre modèle.

    Remarque : enregistrez l'OCID de déploiement de modèle ici. Vous devrez configurer les stratégies ultérieurement.

    img_3.png

    URL de prédiction de déploiement de modèle Data Science.

    img_4.png

  7. Entrez le nom d'en-tête model_deployment et les valeurs en tant qu'URL de prédiction de déploiement de modèle Data Science.

    img_3.png

    img_4.png

    Remarque : une fois le déploiement d'API Gateway enregistré, mémorisez l'adresse de déploiement d'API.

    img_2.png

Tâche 4 : configurer le groupe et les stratégies OCI

Créez un groupe dynamique pour accorder l'accès à votre ressource OCI à partir d'OCI Functions. Dans ce tutoriel, nous utilisons le déploiement de modèle Data Science. Pour plus d'informations sur l'utilisation du principal de ressource, reportez-vous à Principal de ressource.

  1. Obtenez l'OCID de l'instance de déploiement de modèle. Entrez l'OCID dans la chaîne de groupe dynamique.

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

    Remarque : resource.id est l'OCID obtenu précédemment dans l'écran de la console Déploiement de modèle.

    img_4.png

  2. Créez une stratégie pour autoriser le groupe dynamique. Pour plus d'informations, reportez-vous à la section Model Deployment Policies.

    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

Tâche 5 : API de test

Simulons maintenant la demande OAuth2 de votre application pour le service de déploiement de modèle dans OCI Data Science.

  1. Obtenez le jeton transmettant l'ID client et la clé secrète client à votre fournisseur Oracle Identity Cloud Service.

    img_2.png

  2. Entrez l'adresse de déploiement OCI API Gateway et sélectionnez la demande REST POST. Copiez la valeur access_token et transmettez-la à votre déploiement OCI API Gateway. N'oubliez pas que votre jeton a une durée d'une heure.

    img_5.png

    Et voici le résultat !

    img.png

Remerciements

Ressources de formation supplémentaires

Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.