Créer des déploiements de passerelle d'API
Grâce à vos fonctions prêtes, vous pouvez intégrer et tester le mécanisme d'authentification natif pour la validation JWT avec Oracle Identity Cloud Service.
Créer un déploiement de passerelle d'API avec une validation JWT native
L'utilisation de la fonctionnalité de validation JWT native de passerelle Oracle Cloud Infrastructure permet d'ajouter une stratégie d'authentification basée sur un jeton Web Java (JWT) pour votre déploiement.
Ce type JWT permet d'indiquer les données requises pour effectuer la validation du jeton d'accès entrant (via un en-tête ou un paramètre). La stratégie exige les informations suivantes :
- Emetteurs autorisés : émetteurs de jeton. Plusieurs serveurs OAuth sont présents, mais dans ce cas, vous utiliserez
https://identity.oraclecloud.com/
. - Publics : ressources auxquelles l'accès pour ce jeton doit être autorisé.
- Clés publiques : ensemble de clés Web JSON (JWKS) à utiliser pour valider le jeton, dans les émetteurs et les publics. Deux types de JWKS sont autorisés :
- Clés statiques : avec cette option, vous devez définir JWKS manuellement au format JSON, qui doit avoir les propriétés requises conformément à la section 4 RFC 7517.
- Clés distantes : Avec cette option, vous devez indiquer une URL à partir de laquelle JWKS peut être utilisé via REST. Pour se limiter, l'URL indiquée ne doit pas être protégée, car elle ne prend pas en charge la lecture d'URL protégées pour extraire JWKS.
- Options avancées:
- Décalage maximal de couches en secondes : si la passerelle d'API et le fournisseur d'identités présentent des différences dans le temps, cette valeur vous permet d'ajuster le temps de validité du jeton pour essayer d'aligner le temps entre les deux services.
- Réclamations : permet de vérifier les réclamations si le jeton entrant est requis. Par exemple,
client_id
claim ouuser_id
claim.
Créez un nom de déploiement dans votre passerelle d'API avec un acheminement pour atteindre la fonction créée dans les étapes précédentes, en utilisant l'adresse et la validation JWT. Dans cet exemple, le déploiement est nommé : my_jwt_test
.
my_jwt_test
de déploiement de passerelle d'API.
Appel REST d'adresse de test
Pour tester l'appel REST de la nouvelle adresse, vous pouvez utiliser la fonction Obtenir un nouveau jeton d'accès de Postman.
Si vous utilisez le jeton généré dans les étapes suivantes, vous ne pourrez pas atteindre les adresses Oracle Fusion Applications Cloud Service directement, car le jeton a été généré avec l'application Oracle Identity Cloud Service de Oracle Visual Builder et il ne peut atteindre Oracle Functions qu'avec la configuration en cours, selon les portées précédemment configurées. En outre, si vous utilisez une application Oracle Identity Cloud Service différente pour générer le jeton et que cette application ne dispose pas des autorisations nécessaires pour atteindre la portée de ressource Oracle Functions, la passerelle d'API ne permet pas la demande (elle renverra une erreur 401) car vous avez ajouté l'audience de la ressource Oracle Identity Cloud Service Oracle Functions. Si vous avez ajouté des vérifications client-id Claims, la passerelle API vérifie que les jetons correspondent uniquement à ceux indiqués par Oracle Identity Cloud Service Apps client_ids.
Utilisez les paramètres suivants pour le test :
- Type d'octroi : informations d'identification et de connexion par mot de passe - Ce type d'octroi est utilisé pour garantir que le nom utilisateur fourni sera le sujet dans le jeton généré.
- URL du jeton d'accès : URL OAuth de votre instance Oracle Identity Cloud Service. Par exemple,
https://idcs-myinstance.identity.dc1.oraclecloud.com/oauth2/v1/token
. - Nom utilisateur : utilisateur qui existe dans Oracle Identity Cloud Service et dans Oracle Fusion Applications Cloud Service avec les privilèges appropriés dans les deux.
- Mot de passe : entrez le mot de passe de cet utilisateur.
- ClientId: ID de la ressource Oracle Functions du client Oracle Identity Cloud Service associée à Oracle Visual Builder.
- ClientSecret: la clé secrète client de la ressource Oracle Functions du client d'application Oracle Identity Cloud Service associée à Oracle Visual Builder
- Périmètre : cette portée doit correspondre aux ressources fournies par l'application Oracle Identity Cloud Service Oracle Functions. Par exemple,
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"
}
]
}
}
Créer éventuellement un déploiement de passerelle d'API avec une authentification personnalisée
Cette approche permet d'utiliser une fonction d'authentification personnalisée pour valider le jeton Bearer des appels entrants vers des adresses de passerelle d'API.
Il s'agit de la fonction facultative que vous avez définie si vous avez suivi les étapes de la section Définir une fonction d'authentification dans Oracle Cloud Infrastructure (facultatif).
Le fragment de code suivant est un exemple de fichier JSON de spécification de déploiement d'API Oracle Cloud Infrastructure que vous pouvez utiliser à la place de l'assistant. Ce fichier peut contenir les éléments suivants :
- Lignes 1-8: stratégie de demande d'authentification. Il s'agit de la définition qui indique, pour toute demande dans ce déploiement, appelez d'abord cette fonction (functionId), en transmettant tokenHeader et, si elle renvoie la valeur True, continuez, et répondez par un message HTTP non autorisé.
- Lignes 9-17: définition CORS permettant de gérer et de contrôler le partage CORS.
- Lignes 18-43: deux points d'entrée d'URL/VERB pour chaque fonction dans 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>