Configurer OCI Serverless Fn pour la connexion à l'application Identity Aware basée sur REST

Comment le système orchestré REST générique utilise-t-il le service des fonctions pour OCI?

Oracle Access Governance tire parti d'OCI Functions pour les intégrations d'API REST. Chaque système REST orchestré générique que vous créez est associé à une fonction OCI qui contient la logique de traitement des demandes et de génération des réponses. Il appelle les API REST du système géré pour les opérations de rapprochement et de provisionnement des données lorsqu'elles sont déclenchées par Oracle Access Governance.

Pour plus de détails sur l'utilisation du service des fonctions pour OCI, voir Oracle Cloud Infrastructure Functions.

Configuration de votre location pour activer le service des fonctions pour OCI

Pour pouvoir utiliser le service des fonctions pour OCI pour créer et déployer des fonctions, vous devez créer des ressources Oracle Cloud Infrastructure pour prendre en charge cette fonction. Les ressources que vous devez créer comprennent un compte d'utilisateur, un groupe auquel le compte d'utilisateur appartient, un compartiment, un réseau en nuage virtuel (VCN), des chambres fortes et des clés secrètes, ainsi que des politiques permettant au groupe (et aux comptes d'utilisateur qui lui appartiennent) d'accéder aux ressources liées aux fonctions. Si des ressources appropriées existent déjà, il n'est pas nécessaire d'en créer de nouvelles.

Créer un compartiment

Si vous ne disposez pas d'un compartiment approprié dans lequel vous pouvez créer des ressources de réseau et des ressources du service des fonctions pour OCI :
  1. Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
  2. Ouvrez le menu de navigation et sélectionnez Identité et sécurité → Identité → Compartiments.
  3. Sélectionnez Créer un compartiment et ajoutez un compartiment, par exemple ocifn_compartment : Pour plus de détails sur la création d'un compartiment, voir Pour créer un compartiment.
Note

Vous créez un compartiment dont vous êtes responsable :
  • Ressources de réseau
  • Ressources liées aux fonctions
Vous pouvez créer un seul compartiment pour contenir les deux jeux de ressources, ou vous pouvez créer des compartiments distincts pour les ressources de réseau et les ressources liées aux fonctions.

Créez un réseau en nuage virtuel et des sous-réseaux

Si vous n'avez pas de VCN approprié pour créer des ressources de réseau :
  1. Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
  2. Ouvrez le menu de navigation et sélectionnez Service de réseau → réseaux en nuage virtuels.
  3. Sélectionnez Démarrer l'Assistant VCN pour créer un nouveau VCN.
  4. Dans la boîte de dialogue, sélectionnez Créer un VCN avec connectivité Internet et cliquez sur l'Assistant Démarrer le VCN.
  5. Dans l'assistant, entrez les détails suivants :
    1. Nom du VCN : Entrez le nom du VCN, par exemple ocifn_vcn.
    2. Compartiment : Entrez le compartiment dans lequel les ressources de VCN seront créées, par exemple ocifn_compartment.
  6. Cliquez sur Suivant, puis sur Créer pour créer le VCN et les ressources de réseau connexes.

Pour plus de détails sur toutes les options lors de la création du VCN, voir Création du VCN et des sous-réseaux à utiliser avec le service des fonctions pour OCI.

Créer une chambre forte et une clé secrète OCI

Si vous ne disposez pas d'une chambre forte appropriée dans laquelle stocker les données d'identification du client :

  1. Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
  2. Ouvrez le menu de navigation et sélectionnez Identité et sécurité → Gestion des clés et des clés secrètes.
  3. Cliquez sur Créer une chambre forte.
  4. Sélectionnez le compartiment dans lequel la chambre forte sera créée et donnez un nom à la chambre forte. Cliquez sur Créer une chambre forte.
  5. Ouvrez la chambre forte que vous avez créée et cliquez sur Créer une clé. Créez la clé dans le compartiment que vous avez créé votre chambre forte. Donnez un nom à la clé et cliquez sur Créer une clé.
  6. Dans le menu Ressources, sélectionnez Clés secrètes. Cliquez sur Créer une clé secrète.
  7. Dans la page Créer une clé secrète, ajoutez des détails pour le compartiment, le nom et la description. Sélectionnez la clé que vous avez créée dans la liste déroulante Clé de chiffrement. Sélectionnez l'option Génération manuelle des clés secrètes et entrez votre code client et votre clé secrète client dans l'un des formats suivants dans le champ Contenu de la clé secrète.
    1. Autorisation basée sur OAuth
      {
        "clientCode": "69b48365-14e2-430a-bd75-171f89c158fa",
        "clientSecret": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82"
      }
      Pour un exemple de code permettant de créer un jeton d'autorisation pour une autorisation basée sur OAuth, voir OAuth Authorization - Sample Token Creation Code.
    2. Autorisation de base
      {
        "username": "69b48365-14e2-430a-bd75-171f89c158fa",
        "password": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82"
      }
      .
    Pour un exemple de code permettant de créer un jeton d'autorisation pour l'autorisation de base, voir Autorisation de base - Exemple de code de création de jeton.
  8. Sélectionnez Créer une clé secrète pour enregistrer vos modifications.

La clé secrète que vous avez créée peut être utilisée pour transmettre des clés secrètes de client dans votre fonction de demande. Sélectionnez la clé secrète que vous avez créée et copiez la valeur de l'OCID de la clé secrète, qui ressemblera à ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0.

Modifiez le fichier <SampleBase>/grc-request-template/src/main/resources/request/applications/<YourApplicationName>/config.yaml et ajoutez les détails de la clé secrète et de la région, par exemple :
secretId: "ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0"
region: "us-ashburn-1"

Pour plus de détails sur les clés secrètes de chambre forte OCI, voir Gestion des clés secrètes de chambre forte.

Créer ou mettre à jour un groupe dynamique

Pour utiliser OCI Vault and Secret Services, votre fonction doit faire partie d'un groupe dynamique. Pour plus de détails sur la création de votre groupe dynamique, suivez les instructions sous Gestion des groupes dynamiques.

Dans le cadre de la création de votre groupe dynamique, vous devrez définir un jeu de règles de correspondance pour définir le membre du groupe. Lorsque vous spécifiez la règle de correspondance, il est recommandé de mettre en correspondance toutes les fonctions d'un compartiment avec la règle suivante :
ALL { resource.type = 'fnfunc', resource.compartment.id = 'ocid1.compartment.oc1..fdfdfege4om6nat7fue56566556qqvj3eesjqhmjaegeiaxa' }

Créer une politique pour la chambre forte et la clé secrète OCI

Créez une politique qui permet au groupe dynamique créé à l'étape ci-dessus de lire secret-family dans votre location. Pour plus d'informations sur la création de politiques OCI, voir Syntaxe de politique.

  1. Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
  2. Ouvrez le menu de navigation et sélectionnez Identité et sécurité → Identité → Politiques.
  3. Sélectionnez Créer une politique, spécifiez un nom pour la politique, par exemple ocifn_policy, et sélectionnez le compartiment racine de la location.
  4. Ajoutez un énoncé de politique similaire à :
    Allow dynamic-group <dynamic-group-name> to read secret-family in tenancy

Créer une politique pour le groupe et le service

Si un ou plusieurs utilisateurs du service des fonctions pour OCI, par exemple ocifn_user n'est pas un administrateur de location :
  1. Connectez-vous à la console Oracle Cloud Infrastructure en tant qu'administrateur de location.
  2. Ouvrez le menu de navigation et sélectionnez Identité et sécurité → Identité → Politiques.
  3. Sélectionnez Créer une politique, spécifiez un nom pour la politique, par exemple ocifn_policy, et sélectionnez le compartiment racine de la location.
  4. À l'aide du générateur de politiques, sélectionnez Fonctions dans la liste Cas d'utilisation de politique et basez votre politique sur le modèle Permettre aux utilisateurs de créer, de déployer et de gérer des fonctions et des applications.
  5. Sélectionnez le groupe créé précédemment, ocifn_group et ocifn_compartment pour l'emplacement. Cela devrait vous donner un énoncé de politique similaire à :
    Allow group 'Default'/'ocifn_grp' to use cloud-shell in tenancy
    Allow group 'Default'/'ocifn_grp' to manage repos in compartment ocifn_compartment
    Allow group 'Default'/'ocifn_grp' to read objectstorage-namespaces in tenancy
    Allow group 'Default'/'ocifn_grp' to manage logging-family in compartment ocifn_compartment
    Allow group 'Default'/'ocifn_grp' to read metrics in compartment ocifn_compartment
    Allow group 'Default'/'ocifn_grp' to manage functions-family in compartment ocifn_compartment
    Allow group 'Default'/'ocifn_grp' to use virtual-network-family in compartment ocifn_compartment
    Allow group 'Default'/'ocifn_grp' to use apm-domains in compartment ocifn_compartment
    Allow group 'Default'/'ocifn_grp' to read vaults in compartment ocifn_compartment
    Allow group 'Default'/'ocifn_grp' to use keys in compartment ocifn_compartment
    Allow service faas to use apm-domains in compartment ocifn_compartment
    Allow service faas to read repos in tenancy where request.operation='ListContainerImageSignatures'
    Allow service faas to {KEY_READ} in compartment ocifn_compartment where request.operation='GetKeyVersion'
    Allow service faas to {KEY_VERIFY} in compartment ocifn_compartment where request.operation='Verify'

Pour plus de détails sur la création de politiques pour le service des fonctions pour OCI, voir Création de politiques pour contrôler l'accès aux ressources de réseau et aux ressources liées aux fonctions

Créer une application pour regrouper vos fonctions OCI

Dans OCI Functions, une application est un regroupement logique de fonctions. Les propriétés que vous spécifiez pour une application déterminent l'allocation et la configuration des ressources pour toutes les fonctions de cette application. Vous devez créer une fonction dans une application, de sorte qu'au moins une application doit exister pour que vous puissiez créer une fonction dans OCI Functions.

Pour créer une application :
  1. Connectez-vous à la console Oracle Cloud Infrastructure en tant que développeur de fonctions.
  2. Ouvrez le menu de navigation et sélectionnez Services de développement → Fonctions → Applications.
  3. Sélectionnez le compartiment que vous utilisez pour les fonctions de système orchestrées REST génériques.
  4. Cliquez sur Créer une application.
  5. Ajoutez un nom pour l'application, par exemple agcs-generic-rest-connector. Vous allez déployer vos fonctions dans cette application et spécifier cette application lors de l'appel de la fonction.
  6. Sélectionnez le VCN et le sous-réseau dans lesquels exécuter la fonction.
  7. Cliquez sur Créer.

Pour plus de détails sur la création d'applications avec le service des fonctions pour OCI, voir Création d'applications.

Configurer l'environnement pour développer le service des fonctions pour OCI

Pour créer et déployer OCI Functions, vous devez installer et configurer un environnement de développement.

Avant de pouvoir créer des fonctions OCI pour le système orchestré REST générique. Vous devez installer et configurer un environnement de développement, si vous n'en avez pas déjà un disponible. La configuration d'un environnement de développement peut se faire de plusieurs façons et comprend certaines ou toutes les étapes suivantes :
  • Installer et démarrer Docker
  • Configurer la clé de signature d'API et le profil OCI
  • Installer l'interface de ligne de commande Fn Project
  • Configurer le fournisseur de contexte de l'interface de ligne de commande Fn Project
  • Terminer la configuration du contexte de l'interface de ligne de commande Fn Project
  • Générer le jeton d'authentification
  • Se connecter au registre
Vous trouverez des détails complets sur la configuration de votre environnement de développement dans différents contextes dans la documentation sur Oracle Cloud Infrastructure comme suit :

Une fois votre environnement de développement configuré, vous pouvez commencer à développer et à déployer des fonctions pour le système orchestré REST générique.

Développer et déployer une fonction pour OCI

Pour déployer le système orchestré REST générique, vous devez développer et déployer une fonction OCI qui vous permet de vous connecter au système sensible aux identités que vous souhaitez intégrer à Oracle Access Governance à l'aide de REST.

Pour développer et déployer OCI Functions à utiliser avec le système orchestré REST générique :

Configurer l'exemple de mise en oeuvre

Pour faciliter le développement de votre service des fonctions pour OCI, un exemple de mise en oeuvre est fourni avec le système orchestré REST générique. Pour télécharger cet exemple, vous devez suivre les instructions fournies dans la procédure Sélectionner un système.

L'exemple de mise en oeuvre téléchargé, idm-agcs-generic-rest-reference-implementation.zip, comprend quatre cas d'utilisation. Lorsque vous décompressez le fichier, vous verrez les quatre répertoires suivants à partir desquels vous pouvez choisir un échantillon qui répond à vos besoins.
Note

Dans les détails qui suivent, le répertoire vers lequel vous avez décompressé l'exemple de mise en oeuvre est appelé <SampleBase>. Utilisez cette option pour localiser les fichiers mentionnés. Par exemple :

Si vous décompressez l'exemple de mise en oeuvre dans un répertoire, par exemple, /myagfunctions, le fichier <SampleBase>/grc-schema-template/src/main/resources/schema/config.yaml se trouve à l'adresse /myagfunctions/grc-schema-template/src/main/resources/schema/config.yaml.

  1. idm-agcs-serverless-getting-started-sample : Il s'agit d'un échantillon de base facile à comprendre avec un code minimal, montrant comment fonctionnent les fonctions. Ce cas d'utilisation est idéal pour les clients qui doivent intégrer une seule application au connecteur REST générique, nécessitant une configuration minimale. La configuration initiale est effectuée avec une application Oracle Identity Cloud Service (IDCS). Les étapes détaillées de configuration et de déploiement de cette fonction se trouvent dans le fichier `README.md` de ce répertoire.
  2. idm-agcs-serverless-IDCS-application-sample : Cet exemple se concentre sur l'exemple d'application IDCS avec une configuration minimale. Il inclut la structure permettant d'ajouter d'autres applications à l'avenir dans cette fonction. Les étapes de configuration et de déploiement sont détaillées dans le fichier `README.md` situé dans ce répertoire.
  3. idm-agcs-serverless-azuread-application-sample : Cet exemple est destiné spécifiquement aux clients qui ont besoin d'un exemple d'application AzureAD avec une configuration minimale. Il contient la structure permettant d'ajouter d'autres applications à l'avenir dans cette fonction. Des étapes détaillées pour configurer et déployer cette fonction sont disponibles dans le fichier `README.md` dans ce répertoire.
  4. idm-agcs-serverless-multi-application-sample : Cet exemple est destiné aux clients nécessitant à la fois des exemples d'application IDCS et AzureAD avec une configuration minimale. Il inclut la structure permettant d'ajouter d'autres applications à l'avenir dans cette fonction. Le fichier `README.md` de ce répertoire fournit toutes les étapes nécessaires pour configurer et déployer cette fonction.

Créer des fonctions pour votre application

Créer les fonctions pour votre propre système basé sur REST sensible aux identités, en se référant aux modèles de référence et en configurant les fonctions telles que définies ci-dessous, avec des valeurs spécifiques à votre application.

MODÈLE DE SCHÉMA DE GRC
Élément Description
Entrée Nom du système orchestré
Configuration

Liste des systèmes REST personnalisés configurés :<SampleBase>/grc-schema-template/src/main/resources/schema/config.yaml

Par exemple, à partir de l'exemple de mise en oeuvre :
applications:
  - "idcs"

Liste des systèmes orchestrés liés à un système REST personnalisé : <SampleBase>/grc-schema-template/src/main/resources/schema/applications/<YourApplicationName>/config.yaml

Par exemple, à partir de l'exemple de mise en oeuvre :
application: "idcs"
connectedSystemConfigs:
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_1>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_2>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_3>>"
Sortie
Document de modèle de schéma JSON, avec un ou plusieurs schémas d'entité, y compris l'un des types d'entité suivants :
  • COMPTE
  • DROIT
  • CONSULTER
  • COMPTE CIBLE

<SampleBase>/grc-schema-template/src/main/resources/schema/applications/<YourApplicationName>/TEMPLATE.json

Pour un exemple de mise en oeuvre, voir Sortie de schéma.

GRC-DEMANDE-MODÈLE
Élément Description
Entrée
  • Nom du système orchestré
  • Nom de l'opération
  • Nom d'entité
Configuration

Liste des systèmes REST personnalisés configurés : <SampleBase>/grc-request-template/src/main/resources/request/config.yaml

Par exemple, à partir de l'exemple de mise en oeuvre :
applications:
  - "idcs"

Liste des systèmes orchestrés liés à un système REST personnalisé : <SampleBase>/grc-request-template/src/main/resources/request/applications/<YourApplicationName>/config.yaml

Par exemple, à partir de l'exemple de mise en oeuvre :
application: "idcs"
connectedSystemConfigs:
  - connectedSystemName: "<<CONNECTED_SYSTEM_NAME_1>>"
    authenticationDetail:
      scheme: "https"
      host: "<<IDCS_AUTH_API_HOST_1>>"
      path: "/oauth2/v1/token"
      method: "POST"
      grantType: "client_credentials"
      scope: "urn:opc:idm:__myscopes__"
      secretId: "<<SECRET_ID_1>>"
      region: "<<REGION>>"
    applicationInstanceDetail:
      scheme: "https"
      host: "<<IDCS_API_HOST_1>>"
  - connectedSystemName: "<<CONNECTED_SYSTEM_NAME_2>>"
    authenticationDetail:
      scheme: "https"
      host: "<<IDCS_AUTH_API_HOST_2>>"
      path: "/oauth2/v1/token"
      method: "POST"
      grantType: "client_credentials"
      scope: "urn:opc:idm:__myscopes__"
      secretId: "<<SECRET_ID_2>>"
      region: "<<REGION>>"
    applicationInstanceDetail:
      scheme: "https"
      host: "<<IDCS_API_HOST_2>>"
  - connectedSystemName: "<<CONNECTED_SYSTEM_NAME_3>>"
    authenticationDetail:
      scheme: "https"
      host: "<<IDCS_AUTH_API_HOST_3>>"
      path: "/oauth2/v1/token"
      method: "POST"
      grantType: "client_credentials"
      scope: "urn:opc:idm:__myscopes__"
      secretId: "<<SECRET_ID_3>>"
      region: "<<REGION>>"
    applicationInstanceDetail:
      scheme: "https"
      host: "<<IDCS_API_HOST_3>>"
Sortie

Document de modèle de demande JSON, pour les entités et les opérations définies :

Entités
  • COMPTE
  • DROIT
  • CONSULTER
  • COMPTE CIBLE
Opérations
  • CRÉER
  • GET
  • RECHERCHER
  • DELETE
  • METTRE À JOUR
  • ADD_CHILD_DATA
  • REMOVE_CHILD_DATA
  • ACTIVER
  • DÉSACTIVER

<SampleBase>/grc-schema-template/src/main/resources/request/applications/<YourApplicationName>/<EntityName>/<Operation>_TEMPLATE.json

Pour un exemple de mise en oeuvre, voir Sortie de demande.

GRC-RÉPONSE-MODÈLE
Élément Description
Entrée
  • Nom du système orchestré
  • Nom de l'opération
  • Nom d'entité
Configuration

Liste des systèmes REST personnalisés configurés : <SampleBase>/grc-response-template/src/main/resources/response/config.yaml

Par exemple, à partir de l'exemple de mise en oeuvre :
applications:
  - "idcs"

Liste des systèmes orchestrés liés à un système REST personnalisé : <SampleBase>/grc-response-template/src/main/resources/response/applications/<YourApplicationName>/config.yaml

Par exemple, à partir de l'exemple de mise en oeuvre :
application: "idcs"
connectedSystemConfigs:
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_1>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_2>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_3>>"
Sortie

Document de modèle de réponse JSON, pour les entités et les opérations définies :

Entités
  • COMPTE
  • DROIT
  • CONSULTER
  • COMPTE CIBLE
Opérations
  • CRÉER
  • GET
  • RECHERCHER
  • DELETE
  • METTRE À JOUR
  • ADD_CHILD_DATA
  • REMOVE_CHILD_DATA
  • ACTIVER
  • DÉSACTIVER

<SampleBase>/grc-response-template/src/main/resources/response/applications/<YourApplicationName>/<EntityName>/<Operation>_TEMPLATE.json

Pour un exemple de mise en oeuvre, voir Sortie de réponse.

MODÈLE GRC-TEST
Élément Description
Entrée Nom du système orchestré
Configuration

Liste des systèmes REST personnalisés configurés : <SampleBase>/grc-test-template/src/main/resources/test/config.yaml

Par exemple, à partir de l'exemple de mise en oeuvre :
applications:
  - "idcs"

Liste des systèmes orchestrés liés à une application REST personnalisée sensible aux identités : <SampleBase>/grc-test-template/src/main/resources/test/applications/<YourApplicationName>/config.yaml

Par exemple, à partir de l'exemple de mise en oeuvre :
application: "idcs"
connectedSystemConfigs:
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_1>>"
    authenticationDetail:
      scheme: "https"
      host: "<<IDCS_AUTH_API_HOST_1>>"
      path: "/oauth2/v1/token"
      method: "POST"
      grantType: "client_credentials"
      scope: "urn:opc:idm:__myscopes__"
      secretId: "<<SECRET_ID_1>>"
      region: "<<REGION>>"
    applicationInstanceDetail:
      scheme: "https"
      host: "<<IDCS_API_HOST_1>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_2>>"
    authenticationDetail:
      scheme: "https"
      host: "<<IDCS_AUTH_API_HOST_2>>"
      path: "/oauth2/v1/token"
      method: "POST"
      grantType: "client_credentials"
      scope: "urn:opc:idm:__myscopes__"
      secretId: "<<SECRET_ID_2>>"
      region: "<<REGION>>"
    applicationInstanceDetail:
      scheme: "https"
      host: "<<IDCS_API_HOST_2>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_3>>"
    authenticationDetail:
      scheme: "https"
      host: "<<IDCS_AUTH_API_HOST_3>>"
      path: "/oauth2/v1/token"
      method: "POST"
      grantType: "client_credentials"
      scope: "urn:opc:idm:__myscopes__"
      secretId: "<<SECRET_ID_3>>"
      region: "<<REGION>>"
    applicationInstanceDetail:
      scheme: "https"
      host: "<<IDCS_API_HOST_3>>"
Sortie

Document de modèle de demande de test JSON : <SampleBase>/grc-test-template/src/main/resources/test/applications/<YourApplicationName>/TEMPLATE.json

Par exemple, à partir de l'exemple de mise en oeuvre :
{
  "id": "1",
  "name": "Test connectivity invoking schema API",
  "method": "GET",
  "uri":
  {
    "scheme": "<<SCHEME>>",
    "host": "<<HOST>>",
    "path": "/admin/v1/Schemas"
  },
  "queryParameters":
  [
    {
      "name": "startIndex",
      "value": "1"
    },
    {
      "name": "count",
      "value": "1"
    }
  ],
  "headers":
  [
    {
      "name": "Content-Type",
      "value": "application/json"
    },
    {
      "name": "Authorization",
      "value": "<<CREDENTIALS>>"
    }
  ]
}

Guide du module Infra de test

Les modèles de demande et de réponse sont complexes et des erreurs peuvent survenir lors du développement. Il est essentiel d'identifier et de valider tous les modèles de demande et de réponse configurés pour qu'ils soient corrects pendant la création elle-même.

Pour relever ce défi, le module grc-test-infra a été introduit. Ce module comprend des tests correspondant à chaque modèle de demande et de réponse configuré. Ces tests visent à vérifier les demandes faites à l'API REST de l'application cible et les réponses reçues. Pour ce faire, les tests utilisent un utilitaire, tel qu'un processeur de demande et de réponse générique, capable de gérer tout appel d'API REST développé dans le module. Essentiellement, il interagit en interne avec les points d'extrémité de l'application cible et valide les réponses en fonction des modèles de réponse configurés.

Pour identifier et valider efficacement tous les modèles de demande et de réponse GRC configurés pour qu'ils soient corrects pendant la création, procédez comme suit :
  1. Développez des tests en suivant l'exemple décrit ci-dessous :
    grc-test-infra test d'échantillon
    package com.oracle.idm.agcs.grc.fn.test.infra;
     
    public class RequestResponseTemplateValidationTest {
     
        public void validateSearchUserAsIdentityRequestResponseTemplate() throws IOException, URISyntaxException, InterruptedException {
            // Get the configured Request template by passing the connectedSystem Name, entity name, and operation
            RequestTemplateOutput requestTemplate = getRequestTemplateOutput(connectedSystemName, UserAsIdentityEntity, Operation.SEARCH);
             
            // Get the configured Response template by passing the connectedSystem Name, entity name, and operation
            ResponseTemplateOutput responseTemplate = getResponseTemplateOutput(connectedSystemName, UserAsIdentityEntity, Operation.SEARCH);
             
            // Pass the required attributes in the request template by putting them in the attribute map
            HashMap<String, Object> attributesMap = new HashMap<>();
             
            // Call the generic utility method to validate request and response template
            Map<String, Object> lastRecord = processAndValidateRequestAndResponseTemplate(requestTemplate, responseTemplate, attributesMap);
             
            // Retrieve the necessary data from the response for further processing
            userAsIdentityUid = ((ArrayList<String>) lastRecord.get("uid")).get(0);
        }
    }
    • La première ligne du test consiste à obtenir le modèle de demande configuré en transmettant le nom, le nom d'entité et l'opération connectedSystem.
    • La deuxième ligne obtient le modèle de réponse configuré à l'aide de paramètres similaires.
    • Les utilisateurs doivent transmettre les attributs requis dans le modèle de demande en les plaçant dans le mappage d'attributs.
    • Ensuite, les utilisateurs doivent simplement appeler la méthode d'utilitaire générique processAndValidateRequestAndResponseTemplate, qui valide en interne les modèles de demande et de réponse pour vérifier leur exactitude en appelant l'API et en mappant sa réponse avec le modèle de réponse configuré.
    • Le test réussit si les modèles de demande et de réponse configurés sont correctement configurés. Sinon, il échoue, permettant aux utilisateurs de voir le motif de l'échec et de corriger les modèles en conséquence.

    L'exemple de fichier de test se trouve dans l'exemple de mise en oeuvre à l'emplacement suivant : <SampleBase>/grc-test-infra/src/test/java/com/oracle/idm/agcs/grc/fn/test/infra/RequestResponseTemplateValidationTest.java

  2. Ajoutez les préalables suivants avant d'exécuter le test :
    1. Mettez à jour le fichier <SampleBase>/grc-test-infra/src/test/resources/config avec les valeurs suivantes pour votre environnement :
      [DEFAULT]
      user=<<USER>>
      fingerprint=<<FINGERPRINT>>
      key_file=<<PEM_FILE_RELATIVE_PATH>>
      tenancy=<<TENANCY>>
      region=<<REGION>>
    2. Mettez à jour le fichier <SampleBase>/grc-test-infra/src/test/resources/config.properties avec la valeur suivante pour votre environnement :
      connectedSystemName=<connectedSystemName>
    3. Ajoutez la clé SSH privée (fichier .pem) pour la clé de signature d'API à l'emplacement suivant :
      <SampleBase>/grc-test-infra/src/test/resources/oci_api_key.pem
  3. Exécutez le test développé et créez la fonction :
    1. Naviguez jusqu'au répertoire functions de l'exemple de mise en oeuvre.
    2. Compiler et packager les fonctions
      mvn clean package-DisDevMode=true

Créer et déployer votre fonction

  1. Construisez votre fonction.
    cd <SampleBase>
    mvn package
    
  2. Déployez votre fonction sur OCI. Les étapes doivent être effectuées pour chaque fonction
    • grc-schéma-modèle
    • grc-request-template
    • grc-réponse-modèle
    • grc-test-modèle
    cd <SampleBase>/grc-schema-template
    fn -v deploy --app <ApplicationName>