Transmission de jetons aux fonctions d'autorisation pour ajouter l'authentification et l'autorisation aux déploiements d'API
Découvrez comment utiliser des fonctions d'autorisation à argument unique et des jetons d'accès pour ajouter des fonctionnalités d'authentification et d'autorisation aux passerelles d'API avec le service API Gateway.
Vous pouvez ajouter des fonctionnalités d'authentification et d'autorisation à une passerelle d'API en faisant en sorte que la passerelle d'API transmette un jeton d'accès à arguments multiples ou à arguments uniques inclus dans une demande à une fonction d'autorisation déployée sur OCI Functions pour validation (comme décrit dans cette rubrique). Vous pouvez également demander à la passerelle d'API de valider elle-même les jetons inclus dans une demande (comme décrit dans Validation des jetons pour ajouter l'authentification et l'autorisation aux déploiements d'API).
Vous pouvez ajouter des fonctionnalités d'authentification et d'autorisation aux passerelles d'API en écrivant une fonction d'autorisation destinée à effectuer les opérations suivantes :
- Traiter les attributs de demande pour vérifier l'identité d'un client d'API auprès d'un fournisseur d'identités.
- Détermine les opérations que le client API est autorisé à effectuer.
- Renvoie les opérations que le client d'API est autorisé à effectuer sous la forme d'une liste des portées d'accès (une portée d'accès est une chaîne arbitraire utilisée pour déterminer l'accès).
- Renvoyer éventuellement une paire clé-valeur que le déploiement d'API doit utiliser. Par exemple, en tant que variable de contexte à utiliser dans une définition de back-end HTTP (reportez-vous à Ajout de variables de contexte aux stratégies et aux définitions de back-end HTTP).
Selon les fonctionnalités dont vous avez besoin, vous pouvez écrire :
- (Recommandé) Fonction d'autorisation à arguments multiples qui accepte un jeton d'accès à arguments multiples défini par l'utilisateur comprenant un ou plusieurs éléments d'une demande (reportez-vous à Création d'une fonction d'autorisation à arguments multiples (recommandé)). Notez que les fonctions d'autorisation à arguments multiples peuvent accepter des jetons d'accès unique contenus dans un en-tête de demande ou un paramètre de requête.
- Fonction d'autorisation à argument unique qui accepte un jeton d'accès à argument unique comprenant une valeur unique contenue dans un en-tête de demande ou un paramètre de requête dans une demande (reportez-vous à Création d'une fonction d'autorisation à argument unique).
L'utilisation d'une fonction d'autorisation à arguments multiples (plutôt qu'à argument unique) permet à une passerelle d'API d'effectuer une authentification plus précise basée sur les demandes. Une fonction d'autorisation à arguments multiples peut interroger les services de décision et les agents de stratégie avec des attributs du jeton d'accès et avec d'autres éléments de demande tels que les paramètres de requête, le nom d'hôte et le sous-domaine.
Oracle recommande d'utiliser des fonctions d'autorisation à arguments multiples plutôt que des fonctions d'autorisation à argument unique en raison de leur polyvalence supplémentaire. Des fonctions d'autorisation à argument unique ont été fournies dans les versions précédentes et continuent d'être prises en charge. Cependant, étant donné que les fonctions d'autorisation à arguments multiples peuvent également accepter des jetons d'accès à argument unique contenus dans les en-têtes de demande et le paramètre de requête, il n'y a aucune raison de créer de nouvelles fonctions d'autorisation à arguments uniques. En outre, les fonctions d'autorisation à argument unique seront abandonnées dans une prochaine version.
Après avoir écrit la fonction d'autorisation, vous pouvez la déployer vers OCI Functions (reportez-vous à Déploiement d'une fonction d'autorisation).
Pour accéder à un tutoriel du développeur connexe contenant un exemple de fonction d'autorisation, reportez-vous à Functions : validation d'une clé d'API avec API Gateway.
Une fois la fonction d'autorisation déployée, vous pouvez activer l'authentification et l'autorisation pour un déploiement d'API en incluant deux types de stratégie de demande distincts dans la spécification de déploiement d'API :
- Une stratégie de demande d'authentification pour l'ensemble du déploiement d'API qui indique :
- L'OCID de la fonction d'autorisation que vous avez déployée vers OCI Functions qui effectueront l'authentification et l'autorisation.
- les attributs de demande à transmettre à la fonction d'autorisation,
- si les clients d'API non authentifiés peuvent accéder aux routages dans le déploiement d'API.
- Une stratégie de demande d'autorisation pour chaque routage indiquant les opérations qu'un client d'API est autorisé à effectuer, en fonction des portées d'accès du client d'API telles que renvoyées par la fonction d'autorisation.
Vous pouvez ajouter des stratégies de demande d'authentification et d'autorisation à une spécification de déploiement d'API en :
- Utilisation de la console.
- modifiant un fichier JSON.
Pour résoudre les problèmes liés à la fonction d'autorisation, vous pouvez ajouter un journal d'exécution au déploiement d'API en définissant son niveau de journalisation sur Informations (reportez-vous à Ajout de la journalisation aux déploiements d'API).
Pour visualiser les détails dans les fichiers journaux liés à l'authentification et à l'autorisation, recherchez customAuth
.