Criar Implantações de Gateway de API
Com suas funções prontas, você pode integrar e testar o mecanismo de autenticação Nativa para validação JWT com o Oracle Identity Cloud Service.
Criar Implantação do Gateway de API com Validação JWT Nativa
Usando o recurso Validação JWT Nativa de Gateway Oracle Cloud Infrastructure, é possível adicionar uma Política de Autenticação baseada em JWT (Java Web Token) para sua implantação.
Este tipo de JWT permite que você especifique os dados necessários para executar a validação do Token de Acesso de entrada (via Cabeçalho ou Parâmetro). A política requer as seguintes informações:
- Emissores Permitidos: Emissores de token. Vários servidores OAuth são suportados, mas neste caso, você usará
https://identity.oraclecloud.com/
. - Públicos-alvo: Os recursos que podem ser acessados para este token.
- Chaves Públicas: o Conjunto de Chaves Web Json (JWKS) a ser usado para validar o token, dentro dos emissores e públicos. São permitidos dois tipos de JWKS:
- Chaves Estáticas: Com essa opção, você precisa especificar o JWKS manualmente usando o formato JSON, que deve ter as propriedades necessárias de acordo com a Seção 7517 RFC 4.
- Chaves Remotas: Com essa opção, você precisa especificar um URL do qual o JWKS poderá ser consumido com o uso do REST. Uma limitação desse recurso é que o URL especificado precisa estar desprotegido, pois no momento esse recurso não suporta a capacidade de ler URLs protegidos para recuperar o JWKS.
- Opções Avançadas:
- Desvio de Clow máximo em segundos: Se o Gateway de API e o Provedor de Identidades tiverem algumas diferenças no tempo, esse valor permite ajustar o tempo da janela de validade do token para tentar alinhar o tempo entre os dois serviços.
- Reivindicações: para verificar as reivindicações, se necessário, do token de entrada. Por exemplo,
client_id
claim ouuser_id
claim.
Crie um novo nome de Implantação no Gateway de API com uma Rota para chegar à função criada nas etapas anteriores, usando o Ponto Final e a Validação JWT. Neste exemplo, a implantação se chama: my_jwt_test
.
my_jwt_test
de Implantação de Gateway de API.
Testar Chamada REST do Ponto Final
Para testar a nova chamada REST de ponto final, você pode usar o recurso Obter Novo Token de Acesso do Postman.
Observe que, se você usar o token gerado nas etapas a seguir, você não poderá atingir pontos finais Oracle Fusion Applications Cloud Service diretamente, porque o token foi gerado com o Aplicativo Oracle Identity Cloud Service do Oracle Visual Builder e só poderá atingir o Oracle Functions com a configuração atual, de acordo com os Escopos que você configurou anteriormente. Além disso, se você usar um Aplicativo Oracle Identity Cloud Service diferente para gerar o token, e esse aplicativo não tiver as concessões para acessar o Escopo do Recurso Oracle Functions, o Gateway de API não permitirá a solicitação (retornará um erro 401) porque você adicionou o Público-alvo do Recurso Oracle Identity Cloud Service Oracle Functions. Se você tiver adicionado alegações de id do cliente, o Gateway de API garantirá que os tokens só correspondam aos do Oracle Identity Cloud Service Apps client_ids especificados.
Use os seguintes parâmetros para testar:
- Tipo de Concessão: Credenciais de Senha - Este Tipo de Concessão é usado para garantir que o nome de usuário fornecido será o assunto no token gerado.
- URL do Token de Acesso: URL do OAuth da sua instância do Oracle Identity Cloud Service. Por exemplo,
https://idcs-myinstance.identity.dc1.oraclecloud.com/oauth2/v1/token
. - Nome do Usuário: existe um usuário no Oracle Identity Cloud Service e no Oracle Fusion Applications Cloud Service com os privilégios apropriados em ambos.
- Senha: Informe a senha deste usuário.
- ClientId: o ID do Recurso Oracle Functions do Cliente Oracle Identity Cloud Service associado ao Oracle Visual Builder.
- ClientSecret: o segredo do cliente do Recurso Oracle Functions do Cliente de Aplicativos Oracle Identity Cloud Service associado ao Oracle Visual Builder
- Escopo: Este escopo deve corresponder aos Recursos fornecidos pelo Aplicativo Oracle Functions Oracle Identity Cloud Service. Por exemplo,
https://myservice.apigateway.dc1.oci.customer-oci.com/saasextension
{
"principal": "mary.jane",
"gotPrincipalFrom": "BEARER",
"statusCode": "200",
"response": {
"items": [],
"count": 0,
"hasMore": false,
"limit": 25,
"offset": 0,
"links": [
{
"rel": "self",
"href": "https://myfusionservice.fa.dc1.oraclecloud.com:443/fscmRestApi/resources/11.13.18.05/expenses",
"name": "expenses",
"kind": "collection"
}
]
}
}
Como opção, Criar Implantação do Gateway de API com Autenticação Personalizada
Use essa abordagem se optar por usar uma Função de Autenticação personalizada para validar o Token ao Portador para chamadas de entrada para Pontos Finais de Gateway de API.
Esta é a Função opcional que você definiu se seguiu os componentes da seção Opcionalmente Definir uma Função de Autenticação no Oracle Cloud Infrastructure.
O snippet de código a seguir é um exemplo de arquivo JSON de especificação de implantação de API Oracle Cloud Infrastructure que você poderia usar para implantar em vez de usar o assistente. Dentro desse arquivo, podemos ver:
- Linhas 1-8: Uma política de solicitação de autenticação. Esta é a definição que instrui que, para qualquer solicitação nesta implantação, primeiro chame esta função (functionId), informando o tokenHeader e, se retornar verdadeiro, então prossiga; caso contrário, responda com uma mensagem HTTP não autorizada.
- Linhas 9-17: Uma definição CORS para gerenciar e controlar o compartilhamento de recursos de origem cruzada.
- Linhas 18-43: Duas entradas de URL apontam/VERBs para funções individuais no FaaS.
{
"requestPolicies": {
"authentication": {
"type": "CUSTOM_AUTHENTICATION",
"isAnonymousAccessAllowed": true,
"functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx",
"tokenHeader": "Authorization"
}
"cors":{
"allowedOrigins": [<list-of-origins>],
"allowedMethods": [<list-of-methods>],
"allowedHeaders": [<list-of-implicit-headers>],
"exposedHeaders": [<list-of-exposed-headers>],
"isAllowCredentialsEnabled": <true|false>,
"maxAgeInSeconds": <seconds>
}
},
"routes": [
{
"path": "/opportunities",
"methods": [
"GET"
],
"requestPolicies": {},
"backend": {
"type": "ORACLE_FUNCTIONS_BACKEND",
"functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx"
}
},
{
"path": "/opportunities/{optyid}",
"methods": [
"PATCH"
],
"requestPolicies": {},
"backend": {
"type": "ORACLE_FUNCTIONS_BACKEND",
"functionId": "OCID1.fnfunc.oc1.phx.xxxxxxxxxxxxxxx"
}
}
]
}
</seconds></true|false></list-of-exposed-headers></list-of-implicit-headers></list-of-methods></list-of-origins>