Configurar o OCI Serverless Fn para Conexão com o Aplicativo Identity Aware baseado em REST

Como o Sistema Orquestrado REST Genérico Usa o OCI Functions?

O Oracle Access Governance utiliza o OCI Functions para integrações de API REST. Cada Sistema Orquestrado REST Genérico que você cria está associado a uma função do OCI que contém a lógica para processar solicitações e gerar respostas. Ele chama as APIs REST do Sistema Gerenciado para operações de reconciliação e provisionamento de dados quando acionadas pelo Oracle Access Governance.

Para obter detalhes completos sobre como usar o OCI Functions, consulte o Oracle Cloud Infrastructure Functions.

Configurando Sua Tenancy para Ativar o Serviço OCI Functions

Para poder usar o OCI Functions para criar e implantar funções, você deve criar recursos do Oracle Cloud Infrastructure para suportar isso. Os recursos que você precisa criar incluem uma conta de usuário, um grupo ao qual a conta de usuário pertencerá, um compartimento, rede virtual na nuvem (VCN), vaults e segredos e políticas para conceder ao grupo (e às contas de usuário que pertencem a ele) acesso a recursos relacionados a funções. Se já existirem recursos adequados, não há necessidade de criar novos.

Criar Compartimento

Se você não tiver um compartimento adequado no qual possa criar recursos de rede e recursos do OCI Functions:
  1. Acesse a Console do Oracle Cloud Infrastructure como um administrador de tenancy.
  2. Abra o menu de navegação e selecione Identity & Security → Identity → Compartments.
  3. Selecione Criar Compartimento e adicione um compartimento, por exemplo ocifn_compartment: Para obter detalhes sobre como criar um compartimento, consulte Para criar um compartimento
Observação

Você cria um compartimento próprio:
  • Recursos da rede
  • Recursos relacionados a funções
Você pode criar um único compartimento para conter ambos os conjuntos de recursos ou pode criar compartimentos separados para recursos de rede e recursos relacionados a funções.

Criar VCN e Sub-redes

Se você não tiver uma VCN adequada na qual criar recursos de rede:
  1. Acesse a Console do Oracle Cloud Infrastructure como um administrador de tenancy.
  2. Abra o menu de navegação e selecione Rede → Redes virtuais na nuvem.
  3. Selecione Iniciar Assistente de VCN para criar uma nova VCN.
  4. Na caixa de diálogo, selecione Criar VCN com Conectividade da Internet e clique no Assistente de Inicialização da VCN.
  5. No assistente, informe os seguintes detalhes:
    1. Nome da VCN: Digite o nome da VCN, por exemplo, ocifn_vcn.
    2. Compartimento : Informe o compartimento no qual os recursos da VCN serão criados, por exemplo, ocifn_compartment.
  6. Clique em Próximo e, em seguida, clique em Criar para criar a VCN e os recursos de rede relacionados.

Para obter detalhes de todas as opções ao criar a VCN, consulte Criando a VCN e as Sub-redes a Serem Usadas com o Serviço OCI Functions.

Criar Vault e Segredo do OCI

Se você não tiver um vault adequado para armazenar credenciais do cliente:

  1. Acesse o Oracle Cloud Infrastructure Console como administrador de tenancy.
  2. Abra o menu de navegação e selecione Identity & Security → Key Management & Secret Management
  3. Clique em Criar Vault.
  4. Selecione o compartimento no qual o Vault será criado e dê um Nome ao Vault. Clique em Criar Vault.
  5. Abra o Vault que você criou e clique em Criar Chave. Crie a Chave no mesmo compartimento que você criou o Vault. Atribua um nome à Chave e clique em Create Key.
  6. No menu Resources, selecione Secrets. Clique em Criar Segredo.
  7. Na página Criar Segredo, adicione detalhes para compartimento, nome e descrição. Selecione a chave criada na lista drop-down Chave de Criptografia. Selecione a opção Geração manual de segredo e informe o código do cliente e o segredo do cliente em um dos formatos a seguir no campo Conteúdo do Segredo.
    1. Autorização baseada em OAuth
      {
        "clientCode": "69b48365-14e2-430a-bd75-171f89c158fa",
        "clientSecret": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82"
      }
      Para obter o código de amostra para criar o token de autorização para autorização baseada em OAuth, consulte Autorização OAuth - Código de Criação de Token de Amostra.
    2. Autorização Básica
      {
        "username": "69b48365-14e2-430a-bd75-171f89c158fa",
        "password": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82"
      }
      .
    Para obter código de amostra para criar token de autorização para autorização Básica, consulte Autorização Básica - Código de Criação de Token de Amostra
  8. Selecione Criar Segredo para salvar suas alterações.

O segredo que você criou pode ser usado para transmitir segredos do cliente em sua função de solicitação. Selecione o segredo que você criou e copie o valor do OCID do segredo, que será parecido com ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0.

Edite o arquivo <SampleBase>/grc-request-template/src/main/resources/request/applications/<YourApplicationName>/config.yaml e adicione os detalhes do segredo e da região, por exemplo:
secretId: "ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0"
region: "us-ashburn-1"

Para obter mais detalhes sobre os Segredos do OCI Vault, consulte Gerenciando Segredos do Vault.

Crie ou Atualize seu Grupo Dinâmico

Para usar o OCI Vault and Secret Services, sua função deve fazer parte de um grupo dinâmico. Para obter detalhes sobre como criar seu grupo dinâmico, siga as instruções fornecidas em Gerenciando Grupos Dinâmicos.

Como parte da criação do seu grupo dinâmico, você deverá definir um conjunto de regras de correspondência para definir o membro do grupo. Ao especificar a regra de correspondência, é recomendável que você corresponda a todas as funções de um compartimento com a seguinte regra:
ALL { resource.type = 'fnfunc', resource.compartment.id = 'ocid1.compartment.oc1..fdfdfege4om6nat7fue56566556qqvj3eesjqhmjaegeiaxa' }

Criar Política para o OCI Vault e o Segredo

Crie uma nova política que permita que o grupo dinâmico criado na etapa acima leia secret-family em sua tenancy. Para obter mais informações sobre como criar políticas do OCI, consulte Sintaxe de Política

  1. Acesse o Oracle Cloud Infrastructure Console como administrador de tenancy.
  2. Abra o menu de navegação e selecione Identity & Security → Identity → Policies.
  3. Selecione Criar Política, especifique um nome para a política, por exemplo ocifn_policy, e selecione o compartimento raiz da tenancy.
  4. Adicione uma instrução de política semelhante a:
    Allow dynamic-group <dynamic-group-name> to read secret-family in tenancy

Criar Política para Grupo e Serviço

Se um ou mais usuários do OCI Functions, por exemplo, ocifn_user não for um administrador da tenancy:
  1. Acesse a Console do Oracle Cloud Infrastructure como um administrador de tenancy.
  2. Abra o menu de navegação e selecione Identity & Security → Identity → Policies.
  3. Selecione Criar Política, especifique um nome para a política, por exemplo ocifn_policy, e selecione o compartimento raiz da tenancy.
  4. Usando o Policy Builder, selecione Funções na lista Casos de uso da política e baseie sua política no modelo Permitir que os usuários criem, implantem e gerenciem funções e aplicativos.
  5. Selecione o grupo criado anteriormente, ocifn_group e o ocifn_compartment para o local. Isso deverá fornecer uma instrução de política semelhante 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 obter mais detalhes sobre a criação de políticas para o OCI Functions, consulte Criando Políticas para Controlar o Acesso a Recursos Relacionados à Rede e Função

Criar um Aplicativo para Agrupar Suas Funções do OCI

Em Funções do OCI, um aplicativo é um agrupamento lógico de funções. As propriedades que você especifica para um aplicativo determinam a alocação e a configuração de recursos para todas as funções desse aplicativo. Você precisa criar uma função em um aplicativo, portanto, pelo menos um aplicativo deve existir para que você possa criar uma função no OCI Functions.

Para criar um aplicativo:
  1. Acesse a Console do Oracle Cloud Infrastructure como um desenvolvedor de funções.
  2. Abra o menu de navegação e selecione Serviços do Desenvolvedor → Funções → Aplicações.
  3. Selecione o compartimento que você está usando para funções de sistema orquestrado REST Genérico.
  4. Clique em Criar aplicativo.
  5. Adicione um nome para o aplicativo, por exemplo, agcs-generic-rest-connector. Você implantará suas funções neste aplicativo e especificará esse aplicativo ao chamar a função.
  6. Selecione a VCN e a sub-rede na qual a função será executada.
  7. Clique em Criar.

Para obter detalhes completos sobre como criar aplicativos com o OCI Functions, consulte Criando Aplicativos.

Ambiente de Configuração para Desenvolvimento de Funções do OCI

Para criar e implantar suas Funções do OCI, você precisa instalar e configurar um ambiente de desenvolvimento.

Para poder criar funções do OCI para o Sistema Orquestrado REST Genérico, instale e configure um ambiente de desenvolvimento, se você ainda não tiver um disponível. A configuração de um ambiente de desenvolvimento pode ser feita de várias maneiras e inclui algumas ou todas as seguintes etapas:
  • Instalar e iniciar o Docker
  • Configurar chave de assinatura de API e perfil do OCI
  • Instalar interface de linha de comando (CLI) do Fn Project
  • Configurar provedor de contexto da CLI do Fn Project
  • Concluir configuração de contexto da CLI do Fn Project
  • Gerar token da autenticação
  • Fazer logon no registro
Detalhes completos de como configurar seu ambiente de desenvolvimento em diferentes contextos podem ser encontrados na documentação do Oracle Cloud Infrastructure da seguinte forma:

Depois que seu ambiente de desenvolvimento for configurado, você poderá começar a desenvolver e implantar funções para o Sistema Orquestrado REST Genérico.

Desenvolver e Implantar Função no OCI

Para implantar o Sistema Orquestrado REST Genérico, você precisa desenvolver e implantar uma função do OCI que permita estabelecer conexão com o sistema com reconhecimento de identidade que deseja integrar ao Oracle Access Governance usando REST.

Para desenvolver e implantar o OCI Functions para uso com o Sistema Orquestrado REST Genérico:

Configurar Implementação de Amostra

Para ajudar no desenvolvimento de suas Funções do OCI, uma amostra de implementação é fornecida com o Sistema Orquestrado REST Genérico. Para fazer download deste exemplo, siga as instruções fornecidas no procedimento Selecionar Sistema.

O download da implementação de amostra, idm-agcs-generic-rest-reference-implementation.zip, compreende quatro casos de uso. Ao descompactar o arquivo, você verá os quatro diretórios a seguir dos quais poderá escolher uma amostra que atenda aos seus requisitos.
Observação

Nos detalhes a seguir, o diretório para o qual você descompactou a implementação de amostra é chamado de <SampleBase>. Use esta opção para localizar os arquivos mencionados. Por exemplo:

Se você descompactar a implementação de amostra em um diretório, por exemplo, /myagfunctions, o arquivo <SampleBase>/grc-schema-template/src/main/resources/schema/config.yaml poderá ser encontrado em /myagfunctions/grc-schema-template/src/main/resources/schema/config.yaml.

  1. idm-agcs-serverless-getting-started-sample: Esta é uma amostra básica e de fácil compreensão com código mínimo, demonstrando como as funções funcionam. Esse caso de uso é ideal para clientes que precisam integrar um único aplicativo ao conector REST Genérico, exigindo configuração mínima. A configuração inicial é com um aplicativo do Oracle Identity Cloud Service (IDCS). As etapas detalhadas para configurar e implantar esta função podem ser encontradas no arquivo `README.md` dentro deste diretório.
  2. idm-agcs-serverless-IDCS-application-sample: Esta amostra concentra-se no exemplo do aplicativo IDCS com configuração mínima. Ele inclui o framework para adicionar mais aplicativos no futuro dentro dessa função. As etapas de configuração e implantação estão detalhadas no arquivo `README.md` localizado neste diretório.
  3. idm-agcs-serverless-azuread-application-sample: Esta amostra destina-se especificamente a clientes que precisam de um exemplo de aplicativo AzureAD com configuração mínima. Ele contém o framework para adicionar mais aplicativos no futuro dentro dessa função. Etapas detalhadas para configurar e implantar esta função estão disponíveis no arquivo `README.md` dentro deste diretório.
  4. idm-agcs-serverless-multi-application-sample: Esta amostra destina-se a clientes que precisam de exemplos de aplicativos IDCS e AzureAD com configuração mínima. Ele inclui o framework para adicionar mais aplicativos no futuro dentro dessa função. O arquivo `README.md` neste diretório fornece todas as etapas necessárias para configurar e implantar esta função.

Criar Funções para Seu Aplicativo

Crie as funções para seu próprio sistema com reconhecimento de identidade baseado em REST, consultando os modelos de referência e configurando as funções conforme definido abaixo, com valores específicos para seu aplicativo.

GRC-SCHEMA-MODELO
Item Descrição
Entrada Nome do Sistema Orquestrado
Configuração

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

Por exemplo, na implementação de exemplo:
applications:
  - "idcs"

Lista de Sistemas Orquestrados vinculados ao sistema com reconhecimento de identidade REST personalizado: <SampleBase>/grc-schema-template/src/main/resources/schema/applications/<YourApplicationName>/config.yaml

Por exemplo, na implementação de exemplo:
application: "idcs"
connectedSystemConfigs:
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_1>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_2>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_3>>"
Saída
Documento de modelo de Esquema JSON, com um ou mais esquemas de entidade, incluindo qualquer um dos seguintes tipos de entidade:
  • CONTA
  • DIREITO
  • PESQUISA
  • CONTA DE DESTINO

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

Para obter um exemplo da implementação de amostra, consulte Saída do Esquema.

GRC-SOLICITAÇÃO-MODELO
Item Descrição
Entrada
  • Nome do Sistema Orquestrado
  • Nome da operação
  • Nome da entidade
Configuração

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

Por exemplo, na implementação de exemplo:
applications:
  - "idcs"

Lista de Sistemas Orquestrados vinculados ao sistema com reconhecimento de identidade REST personalizado: <SampleBase>/grc-request-template/src/main/resources/request/applications/<YourApplicationName>/config.yaml

Por exemplo, na implementação de exemplo:
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>>"
Saída

Documento de modelo de Solicitação JSON, para entidades e operações definidas:

Entidades
  • CONTA
  • DIREITO
  • PESQUISA
  • CONTA DE DESTINO
Operações
  • CRIAR
  • OBTER
  • BUSCAR
  • EXCLUIR
  • UPDATE
  • ADD_CHILD_DATA
  • REMOVE_CHILD_DATA
  • ENABLE
  • DISABLE

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

Para obter um exemplo da implementação de amostra, consulte Solicitar Saída.

GRC-MODELO DE RESPOSTA
Item Descrição
Entrada
  • Nome do Sistema Orquestrado
  • Nome da operação
  • Nome da entidade
Configuração

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

Por exemplo, na implementação de exemplo:
applications:
  - "idcs"

Lista de Sistemas Orquestrados vinculados ao sistema com reconhecimento de identidade REST personalizado: <SampleBase>/grc-response-template/src/main/resources/response/applications/<YourApplicationName>/config.yaml

Por exemplo, na implementação de exemplo:
application: "idcs"
connectedSystemConfigs:
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_1>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_2>>"
  - connectedSystemName: "<<IDCS_CONNECTED_SYSTEM_NAME_3>>"
Saída

Documento de modelo de Resposta JSON, para entidades e operações definidas:

Entidades
  • CONTA
  • DIREITO
  • PESQUISA
  • CONTA DE DESTINO
Operações
  • CRIAR
  • OBTER
  • BUSCAR
  • EXCLUIR
  • UPDATE
  • ADD_CHILD_DATA
  • REMOVE_CHILD_DATA
  • ENABLE
  • DISABLE

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

Para obter um exemplo da implementação de amostra, consulte Saída de Resposta.

GRC-TESTE-MODELO
Item Descrição
Entrada Nome do Sistema Orquestrado
Configuração

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

Por exemplo, na implementação de exemplo:
applications:
  - "idcs"

Lista de Sistemas Orquestrados vinculados ao aplicativo com reconhecimento de identidade REST personalizado: <SampleBase>/grc-test-template/src/main/resources/test/applications/<YourApplicationName>/config.yaml

Por exemplo, na implementação de exemplo:
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>>"
Saída

Documento do modelo de Solicitação de Teste JSON: <SampleBase>/grc-test-template/src/main/resources/test/applications/<YourApplicationName>/TEMPLATE.json

Por exemplo, na implementação de exemplo:
{
  "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>>"
    }
  ]
}

Testar Guia do Módulo de Infraestrutura

Os modelos de Solicitação e Resposta são complexos e podem ocorrer erros durante o desenvolvimento. É fundamental identificar e validar todos os modelos de solicitação e resposta configurados para correção durante o tempo de criação em si.

Para enfrentar esse desafio, o módulo grc-test-infra foi introduzido. Este módulo inclui testes correspondentes a cada modelo de Solicitação e Resposta configurado. Esses testes visam verificar as solicitações feitas à API REST do aplicativo de destino e as respostas recebidas. Para isso, os testes utilizam um utilitário, como um processador genérico de Solicitação e Resposta, capaz de lidar com qualquer chamada de API REST desenvolvida dentro do módulo. Essencialmente, ele interage internamente com os pontos finais do aplicativo de destino e valida as respostas com base nos modelos de resposta configurados.

Para identificar e validar efetivamente todos os modelos de Solicitação e Resposta de GRC configurados para correção durante o tempo de criação, siga estas etapas:
  1. Desenvolva testes seguindo o exemplo descrito abaixo:
    teste grc-infra teste de amostra
    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);
        }
    }
    • A primeira linha dentro do teste é obter o modelo de Solicitação configurado, informando o Nome, o nome da entidade e a operação connectedSystem.
    • A segunda linha obtém o modelo de Resposta configurado usando parâmetros semelhantes.
    • Os usuários precisam informar os atributos obrigatórios no modelo de solicitação, colocando-os no mapa de atributos.
    • Em seguida, os usuários só precisam chamar o método de utilitário genérico processAndValidateRequestAndResponseTemplate, que valida internamente os modelos de solicitação e resposta para correção chamando a API e mapeando sua resposta com o modelo de resposta configurado.
    • O teste será aprovado se os modelos de solicitação e resposta configurados estiverem configurados corretamente; caso contrário, ele falhará, permitindo que os usuários vejam o motivo da falha e corrijam os modelos adequadamente.

    O arquivo de teste de exemplo pode ser encontrado na implementação de amostra no seguinte local: <SampleBase>/grc-test-infra/src/test/java/com/oracle/idm/agcs/grc/fn/test/infra/RequestResponseTemplateValidationTest.java

  2. Adicione os seguintes pré-requisitos antes de executar o teste:
    1. Atualize o arquivo <SampleBase>/grc-test-infra/src/test/resources/config com os seguintes valores para seu ambiente:
      [DEFAULT]
      user=<<USER>>
      fingerprint=<<FINGERPRINT>>
      key_file=<<PEM_FILE_RELATIVE_PATH>>
      tenancy=<<TENANCY>>
      region=<<REGION>>
    2. Atualize o arquivo <SampleBase>/grc-test-infra/src/test/resources/config.properties com o seguinte valor para seu ambiente:
      connectedSystemName=<connectedSystemName>
    3. Adicione a chave SSH privada (arquivo (.pem) para a Chave de Assinatura de API ao seguinte local:
      <SampleBase>/grc-test-infra/src/test/resources/oci_api_key.pem
  3. Execute o teste desenvolvido e crie a função:
    1. Navegue até o diretório functions da implementação de amostra.
    2. Compilar e empacotar as funções
      mvn clean package-DisDevMode=true

Criar e Implantar Sua Função

  1. Construa sua função.
    cd <SampleBase>
    mvn package
    
  2. Implante sua função no OCI. As etapas devem ser realizadas para cada função
    • grc-esquema-modelo
    • grc-request-template
    • grc-resposta-modelo
    • grc-teste-modelo
    cd <SampleBase>/grc-schema-template
    fn -v deploy --app <ApplicationName>