Configuración de OCI Serverless Fn para conectarse con la aplicación de reconocimiento de identidad basada en REST

¿Cómo utiliza OCI Functions el sistema orquestado REST genérico?

Oracle Access Governance aprovecha las integraciones de OCI Functions para la API de REST. Cada sistema REST orquestado genérico que cree está asociado a una función de OCI que contiene la lógica para procesar solicitudes y generar respuestas. Llama a las API de REST del sistema gestionado para las operaciones de conciliación y aprovisionamiento de datos cuando se disparan mediante Oracle Access Governance.

Para obtener más información sobre cómo utilizar OCI Functions, consulte Oracle Cloud Infrastructure Functions.

Configuración del arrendamiento para activar OCI Functions

Para poder utilizar OCI Functions para crear y desplegar funciones, debe crear recursos de Oracle Cloud Infrastructure para soportar esto. Entre los recursos que debe crear se incluyen una cuenta de usuario, un grupo al que pertenecerá la cuenta de usuario, un compartimento, una red virtual en la nube (VCN), almacenes y secretos, y políticas para otorgar al grupo (y a las cuentas de usuario que le pertenecen) acceso a recursos relacionados con la función. Si ya existen recursos adecuados, no es necesario crear otros nuevos.

Crear compartimento

Si no tiene un compartimento adecuado en el que pueda crear recursos de red y recursos de OCI Functions:
  1. Conéctese a la consola de Oracle Cloud Infrastructure como administrador de arrendamiento.
  2. Abra el menú de navegación y seleccione Identity & Security → Identity → Compartments.
  3. Seleccione Crear compartimento y agregue un compartimento, por ejemplo ocifn_compartment: para obtener más información sobre la creación de un compartimento, consulte Para crear un compartimento
Nota

Cree un compartimento propio:
  • Recursos de la red
  • Recursos relacionados con la función
Puede crear un único compartimento que contenga ambos juegos de recursos, o bien puede crear compartimentos independientes para recursos de red y recursos relacionados con funciones.

Crear VCN y subredes

Si no tiene una VCN adecuada en la que crear recursos de red:
  1. Conéctese a la consola de Oracle Cloud Infrastructure como administrador de arrendamiento.
  2. Abra el menú de navegación y seleccione Networking → Virtual cloud networks.
  3. Seleccione Iniciar asistente de VCN para crear una nueva VCN.
  4. En el cuadro de diálogo, seleccione Create VCN with Internet Connectivity y haga clic en Start VCN Wizard.
  5. En el asistente, introduzca los siguientes detalles:
    1. Nombre de VCN: introduzca el nombre de la VCN, por ejemplo, ocifn_vcn.
    2. Compartimento: introduzca el compartimento en el que se crearán los recursos de la VCN, por ejemplo ocifn_compartment.
  6. Haga clic en Siguiente y, a continuación, en Crear para crear la VCN y los recursos de red relacionados.

Para obtener más información sobre todas las opciones al crear la VCN, consulte Creación de la VCN y las subredes que se deben utilizar con OCI Functions.

Crear OCI Vault y secreto

Si no tiene un almacén adecuado en el que almacenar las credenciales de cliente:

  1. Inicie sesión en la consola de Oracle Cloud Infrastructure como administrador de arrendamiento.
  2. Abra el menú de navegación y seleccione Identity & Security → Key Management & Secret Management.
  3. Haga clic en Crear almacén.
  4. Seleccione el compartimento en el que se creará el almacén y asigne un nombre al almacén. Haga clic en Crear almacén.
  5. Abra el almacén que ha creado y haga clic en Crear clave. Cree la clave en el mismo compartimento en el que ha creado el almacén. Asigne un nombre a la clave y haga clic en Create Key.
  6. Desde el menú Recursos, seleccione Secretos. Haga clic en Crear secreto.
  7. En la página Crear secreto, agregue detalles para el compartimento, el nombre y la descripción. Seleccione la clave que ha creado en la lista desplegable Clave de cifrado. Seleccione la opción Generación manual de secretos e introduzca el código de cliente y el secreto de cliente en uno de los siguientes formatos en el campo Contenido secreto.
    1. Autorización basada en OAuth
      {
        "clientCode": "69b48365-14e2-430a-bd75-171f89c158fa",
        "clientSecret": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82"
      }
      Para ver el código de ejemplo para crear un token de autorización para la autorización basada en OAuth, consulte OAuth Authorization - Sample Token Creation Code.
    2. Autorización Básica
      {
        "username": "69b48365-14e2-430a-bd75-171f89c158fa",
        "password": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82"
      }
      .
    Para ver el código de ejemplo para crear un token de autorización para la autorización básica, consulte Autorización básica: código de creación de token de muestra
  8. Seleccione Crear secreto para guardar los cambios.

El secreto que ha creado se puede utilizar para transferir secretos de cliente en la función de solicitud. Seleccione el secreto que ha creado y copie el valor del OCID del secreto, que tendrá un aspecto similar a ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0.

Edite el archivo <SampleBase>/grc-request-template/src/main/resources/request/applications/<YourApplicationName>/config.yaml y agregue los detalles del secreto y la región, por ejemplo:
secretId: "ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0"
region: "us-ashburn-1"

Para obtener más información sobre los secretos de OCI Vault, consulte Gestión de secretos de Vault.

Crear o actualizar un grupo dinámico

Para utilizar OCI Vault y los servicios secretos, la función debe formar parte de un grupo dinámico. Para obtener más información sobre cómo crear el grupo dinámico, siga las instrucciones proporcionadas en Gestión de grupos dinámicos.

Como parte de la creación del grupo dinámico, deberá definir un juego de reglas de coincidencia para definir el miembro del grupo. Al especificar la regla de coincidencia, se recomienda que coincida con todas las funciones de un compartimento con la siguiente regla:
ALL { resource.type = 'fnfunc', resource.compartment.id = 'ocid1.compartment.oc1..fdfdfege4om6nat7fue56566556qqvj3eesjqhmjaegeiaxa' }

Crear política para OCI Vault y el secreto

Cree una nueva política que permita al grupo dinámico creado en el paso anterior leer secret-family en su arrendamiento. Para obtener más información sobre la creación de políticas de OCI, consulte Sintaxis de políticas.

  1. Inicie sesión en la consola de Oracle Cloud Infrastructure como administrador de arrendamiento.
  2. Abra el menú de navegación y seleccione Identity & Security → Identity → Policies.
  3. Seleccione Crear política, especifique un nombre para la política, por ejemplo ocifn_policy, y seleccione el compartimento raíz del arrendamiento.
  4. Agregue una sentencia de política similar a:
    Allow dynamic-group <dynamic-group-name> to read secret-family in tenancy

Crear política para grupo y servicio

Si uno o más usuarios de OCI Functions, por ejemplo, ocifn_user no es un administrador de arrendamiento:
  1. Conéctese a la consola de Oracle Cloud Infrastructure como administrador de arrendamiento.
  2. Abra el menú de navegación y seleccione Identity & Security → Identity → Policies.
  3. Seleccione Crear política, especifique un nombre para la política, por ejemplo ocifn_policy, y seleccione el compartimento raíz del arrendamiento.
  4. Mediante Policy Builder, seleccione Functions en la lista Casos de uso de política y base la política en la plantilla Permitir a los usuarios crear, desplegar y gestionar funciones y aplicaciones.
  5. Seleccione el grupo creado anteriormente, ocifn_group y ocifn_compartment para la ubicación. Esto debería proporcionarle una sentencia de política similar a:
    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'

Para obtener más información sobre la creación de políticas para OCI Functions, consulte Creación de políticas para controlar el acceso a los recursos relacionados con funciones y de red

Creación de una aplicación para agrupar sus funciones de OCI

En OCI Functions, una aplicación es una agrupación lógica de funciones. Las propiedades que especifique para una aplicación determinan la asignación y configuración de recursos para todas las funciones de esa aplicación. Tiene que crear una función en una aplicación, por lo que debe existir al menos una aplicación para poder crear una función en OCI Functions.

Para crear una aplicación, haga lo siguiente:
  1. Conectarse a la consola de Oracle Cloud Infrastructure como desarrollador de funciones.
  2. Abra el menú de navegación y seleccione Developer Services → Functions → Applications.
  3. Seleccione el compartimento que está utilizando para las funciones del sistema orquestadas de REST genéricas.
  4. Haga clic en Create application.
  5. Agregue un nombre para la aplicación, por ejemplo, agcs-generic-rest-connector. Desplegará las funciones en esta aplicación y especificará esta aplicación al llamar a la función.
  6. Seleccione la VCN y la subred en las que se va a ejecutar la función.
  7. Haga clic en Crear.

Para obtener más información sobre la creación de aplicaciones con OCI Functions, consulte Creación de aplicaciones.

Configurar entorno para desarrollar funciones de OCI

Para crear y desplegar OCI Functions, debe instalar y configurar un entorno de desarrollo.

Para poder crear funciones de OCI para el sistema REST orquestado genérico, debe instalar y configurar un entorno de desarrollo, si aún no tiene uno disponible. La configuración de un entorno de desarrollo se puede realizar de varias formas e incluye algunos o todos los pasos siguientes:
  • Instalar e iniciar Docker
  • Configurar clave de firma de API y perfil de OCI
  • Instalación de la interfaz de línea de comandos (CLI) de Fn Project
  • Configurar proveedor de contexto de CLI de Fn Project
  • Completar configuración de contexto de la CLI de Fn Project
  • Generar token de autorización
  • Iniciar sesión en el registro
Puede encontrar detalles completos sobre cómo configurar el entorno de desarrollo en diferentes contextos en la documentación de Oracle Cloud Infrastructure como se indica a continuación:

Una vez configurado el entorno de desarrollo, puede empezar a desarrollar y desplegar funciones para el sistema REST Orchestrated System genérico.

Desarrollo y despliegue de funciones en OCI

Para desplegar el sistema REST orquestado genérico, debe desarrollar y desplegar una función de OCI que le permita conectarse al sistema consciente de la identidad que desea integrar con Oracle Access Governance mediante REST.

Para desarrollar y desplegar OCI Functions para su uso con el sistema REST Orchestrated System genérico:

Configurar implementación de ejemplo

Para ayudar con el desarrollo de sus funciones de OCI, se proporciona una implantación de ejemplo con el sistema REST Orchestrated System genérico. Para descargar este ejemplo, debe seguir las instrucciones proporcionadas en el procedimiento Select System (Seleccionar sistema).

La implementación de ejemplo descargada, idm-agcs-generic-rest-reference-implementation.zip, consta de cuatro casos de uso. Al descomprimir el archivo, verá los siguientes cuatro directorios de los que puede elegir un ejemplo que cumpla sus requisitos.
Nota

En los detalles que siguen, el directorio en el que ha descomprimido la implantación de ejemplo se denomina <SampleBase>. Utilice esta opción para localizar los archivos mencionados. Por ejemplo:

Si descomprime la implementación de ejemplo en un directorio, por ejemplo, /myagfunctions, el archivo <SampleBase>/grc-schema-template/src/main/resources/schema/config.yaml se puede encontrar en /myagfunctions/grc-schema-template/src/main/resources/schema/config.yaml.

  1. idm-agcs-serverless-getting-started-sample: se trata de un ejemplo básico y fácil de entender con un código mínimo, que muestra cómo funcionan las funciones. Este caso de uso es ideal para los clientes que necesitan integrar una única aplicación con el conector REST genérico, lo que requiere una configuración mínima. La configuración inicial se realiza con una aplicación de Oracle Identity Cloud Service (IDCS). Los pasos detallados para configurar y desplegar esta función se pueden encontrar en el archivo `README.md` de este directorio.
  2. idm-agcs-serverless-IDCS-application-sample: este ejemplo se centra en el ejemplo de aplicación de IDCS con una configuración mínima. Incluye el marco para agregar más aplicaciones en el futuro dentro de esta función. Los pasos de configuración y despliegue se detallan en el archivo `README.md` ubicado en este directorio.
  3. idm-agcs-serverless-azuread-application-sample: este ejemplo es específicamente para clientes que necesitan un ejemplo de aplicación AzureAD con una configuración mínima. Contiene el marco para agregar más aplicaciones en el futuro dentro de esta función. Los pasos detallados para configurar y desplegar esta función están disponibles en el archivo `README.md` dentro de este directorio.
  4. idm-agcs-serverless-multi-application-sample: este ejemplo es para clientes que necesitan ejemplos de aplicaciones IDCS y AzureAD con una configuración mínima. Incluye el marco para agregar más aplicaciones en el futuro dentro de esta función. El archivo `README.md` de este directorio proporciona todos los pasos necesarios para configurar y desplegar esta función.

Creación de funciones para la aplicación

Cree las funciones para su propio sistema consciente de la identidad basado en REST, haciendo referencia a las plantillas de referencia y configurando las funciones como se definen a continuación, con valores específicos para su aplicación.

PLANTILLA DE ESQUEMA DE GRUPO
Artículo Descripción
Entrada Nombre del sistema orquestado
Configuración

Lista de sistemas de reconocimiento de identidad REST personalizados configurados:<SampleBase>/grc-schema-template/src/main/resources/schema/config.yaml

Por ejemplo, de la implantación de ejemplo:
applications:
  - "idcs"

Lista de sistemas orquestados enlazados al sistema de reconocimiento de identidad REST personalizado: <SampleBase>/grc-schema-template/src/main/resources/schema/applications/<YourApplicationName>/config.yaml

Por ejemplo, de la implantación de ejemplo:
application: "idcs"
connectedSystemConfigs:
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_1>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_2>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_3>>"
Salida
Documento de plantilla de esquema JSON, con uno o más esquemas de entidad, incluido cualquiera de los siguientes tipos de entidad:
  • CUENTA
  • DERECHO
  • CONSULTA
  • CUENTA DE TARGETA

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

Para ver un ejemplo de la implementación de ejemplo, consulte Salida de esquema.

PLANTILLA DE SOLICITUD DE GRUPO
Artículo Descripción
Entrada
  • Nombre del sistema orquestado
  • Nombre de la operación
  • Nombre de la Entidad
Configuración

Lista de sistemas de reconocimiento de identidad REST personalizados configurados: <SampleBase>/grc-request-template/src/main/resources/request/config.yaml

Por ejemplo, de la implantación de ejemplo:
applications:
  - "idcs"

Lista de sistemas orquestados enlazados al sistema de reconocimiento de identidad REST personalizado: <SampleBase>/grc-request-template/src/main/resources/request/applications/<YourApplicationName>/config.yaml

Por ejemplo, de la implantación de ejemplo:
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>>"
Salida

Documento de plantilla de solicitud de JSON para entidades y operaciones definidas:

Entidades
  • CUENTA
  • DERECHO
  • CONSULTA
  • CUENTA DE TARGETA
Operaciones
  • CREATE
  • OBTENER
  • BUSCAR
  • SUPRIMIR
  • UPDATE
  • ADD_CHILD_DATA
  • REMOVE_CHILD_DATA
  • ENABLE
  • DISABLE

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

Para ver un ejemplo de la implementación de ejemplo, consulte Request Output (Salida de solicitud).

PLANTILLA DE RESPUESTA DE GRUPO
Artículo Descripción
Entrada
  • Nombre del sistema orquestado
  • Nombre de la operación
  • Nombre de la Entidad
Configuración

Lista de sistemas de reconocimiento de identidad REST personalizados configurados: <SampleBase>/grc-response-template/src/main/resources/response/config.yaml

Por ejemplo, de la implantación de ejemplo:
applications:
  - "idcs"

Lista de sistemas orquestados enlazados al sistema de reconocimiento de identidad REST personalizado: <SampleBase>/grc-response-template/src/main/resources/response/applications/<YourApplicationName>/config.yaml

Por ejemplo, de la implantación de ejemplo:
application: "idcs"
connectedSystemConfigs:
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_1>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_2>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_3>>"
Salida

Documento de plantilla de respuesta JSON para entidades y operaciones definidas:

Entidades
  • CUENTA
  • DERECHO
  • CONSULTA
  • CUENTA DE TARGETA
Operaciones
  • CREATE
  • OBTENER
  • BUSCAR
  • SUPRIMIR
  • UPDATE
  • ADD_CHILD_DATA
  • REMOVE_CHILD_DATA
  • ENABLE
  • DISABLE

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

Para ver un ejemplo de la implementación de ejemplo, consulte Response Output.

PLANTILLA DE PRUEBA DE GRUPO
Artículo Descripción
Entrada Nombre del sistema orquestado
Configuración

Lista de sistemas de reconocimiento de identidad REST personalizados configurados: <SampleBase>/grc-test-template/src/main/resources/test/config.yaml

Por ejemplo, de la implantación de ejemplo:
applications:
  - "idcs"

Lista de sistemas orquestados enlazados a la aplicación de reconocimiento de identidad REST personalizada: <SampleBase>/grc-test-template/src/main/resources/test/applications/<YourApplicationName>/config.yaml

Por ejemplo, de la implantación de ejemplo:
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>>"
Salida

Documento de plantilla de solicitud de prueba JSON: <SampleBase>/grc-test-template/src/main/resources/test/applications/<YourApplicationName>/TEMPLATE.json

Por ejemplo, de la implantación de ejemplo:
{
  "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>>"
    }
  ]
}

Guía del módulo de infraestructura de prueba

Las plantillas de solicitud y respuesta son complejas y se pueden producir errores durante el desarrollo. Es crucial identificar y validar todas las plantillas de solicitud y respuesta configuradas para que sean correctas durante el tiempo de creación en sí.

Para abordar este desafío, se introdujo el módulo grc-test-infra. Este módulo incluye pruebas correspondientes a cada plantilla de solicitud y respuesta configurada. Estas pruebas tienen como objetivo verificar las solicitudes realizadas a la API de REST de la aplicación de destino y las respuestas recibidas. Para lograr esto, las pruebas utilizan una utilidad, como un procesador genérico de solicitud y respuesta, capaz de manejar cualquier llamada de API de REST desarrollada dentro del módulo. Básicamente, interactúa internamente con los puntos finales de la aplicación de destino y valida las respuestas en función de las plantillas de respuesta configuradas.

Para identificar y validar eficazmente todas las plantillas de solicitud y respuesta de GRC configuradas para que sean correctas durante el tiempo de creación, siga estos pasos:
  1. Desarrolle pruebas siguiendo el ejemplo que se describe a continuación:
    ensayo de muestras de grc-test-infra
    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 primera línea dentro de la prueba es obtener la plantilla de solicitud configurada transfiriendo el nombre, el nombre de entidad y la operación connectedSystem.
    • La segunda línea obtiene la plantilla Response configurada mediante parámetros similares.
    • Los usuarios deben transferir los atributos necesarios en la plantilla de solicitud colocándolos en la asignación de atributos.
    • A continuación, los usuarios solo tienen que llamar al método de utilidad genérica processAndValidateRequestAndResponseTemplate, que valida internamente las plantillas de solicitud y respuesta para que sean correctas llamando a la API y asignando su respuesta a la plantilla de respuesta configurada.
    • La prueba se superará si las plantillas de solicitud y respuesta configuradas están configuradas correctamente; de lo contrario, fallará, lo que permitirá a los usuarios ver la razón del fallo y corregir las plantillas según corresponda.

    El archivo de prueba de ejemplo se puede encontrar en la implementación de ejemplo en la siguiente ubicación: <SampleBase>/grc-test-infra/src/test/java/com/oracle/idm/agcs/grc/fn/test/infra/RequestResponseTemplateValidationTest.java

  2. Agregue los siguientes requisitos previos antes de ejecutar la prueba:
    1. Actualice el archivo <SampleBase>/grc-test-infra/src/test/resources/config con los siguientes valores para su entorno:
      [DEFAULT]
      user=<<USER>>
      fingerprint=<<FINGERPRINT>>
      key_file=<<PEM_FILE_RELATIVE_PATH>>
      tenancy=<<TENANCY>>
      region=<<REGION>>
    2. Actualice el archivo <SampleBase>/grc-test-infra/src/test/resources/config.properties con el siguiente valor para su entorno:
      connectedSystemName=<connectedSystemName>
    3. Agregue la clave SSH privada (archivo .pem) para la clave de firma de API a la siguiente ubicación:
      <SampleBase>/grc-test-infra/src/test/resources/oci_api_key.pem
  3. Ejecute la prueba desarrollada y cree la función:
    1. Navegue hasta el directorio functions de la implementación de ejemplo.
    2. Compilar y empaquetar las funciones
      mvn clean package-DisDevMode=true

Creación y despliegue de la función

  1. Construya su función.
    cd <SampleBase>
    mvn package
    
  2. Despliegue su función en OCI. Los pasos deben llevarse a cabo para cada función
    • grc-esquema-plantilla
    • grc-solicitud-plantilla
    • plantilla de respuesta de grupo
    • grc-test-plantilla
    cd <SampleBase>/grc-schema-template
    fn -v deploy --app <ApplicationName>