Les API jouent un rôle essentiel dans la connectivité des applications, mais elles sont également vulnérables aux attaques. Dans le passé, avec les applications monolithiques, il n’y avait qu’un seul point d’entrée à sécuriser. Dans les architectures de microservices, une seule application se compose souvent de plusieurs microservices connectés via des API, et chacune de ces API peut avoir des centaines de points de terminaison. Cela rend la surface d’attaque potentielle des API énorme, chaque nouvelle API créant un point d’entrée dans votre périmètre de sécurité.
Il existe de nombreuses stratégies pour sécuriser vos API. L’un des plus fondamentaux est le contrôle d’accès . En termes simples, vous devez vérifier l’identité de l’utilisateur (authentification ou AuthN) et confirmer qu’il peut accéder à certaines ressources (autorisation ou AuthZ). L’implémentation d’OpenID Connect (OIDC) est l’une des approches de contrôle d’accès les plus courantes utilisées pour les API. Vous pouvez le mettre en place et le faire fonctionner en quelques minutes avec API Connectivity Manager , qui fait partie de F5 NGINX Management Suite .
Dans ce didacticiel, vous apprendrez à exécuter la partie autorisation du workflow OIDC en configurant la validation JSON Web Token (JWT) avec API Connectivity Manager et Azure Active Directory (Azure AD).
OpenID Connect (OIDC) est un protocole d'identité construit sur le protocole OAuth 2.0 . OIDC permet aux clients de vérifier l’identité de l’utilisateur final ou de l’appareil. Il s’agit d’une partie du contrôle d’accès, qui comprend à la fois l’authentification et l’autorisation :
Il existe de nombreuses implémentations différentes d’OIDC, y compris Azure AD, que vous utiliserez dans ce didacticiel. Vous pouvez également utiliser d’autres solutions OIDC, telles que F5 BIG-IP Access Policy Manager (APM), Okta, Auth0, Ping Identity, etc., avec API Connectivity Manager.
Assurez-vous d'avoir les prérequis suivants :
Vous pouvez vous inscrire à votre essai gratuit de 30 jours de NGINX Management Suite si vous avez besoin d'accéder à API Connectivity Manager.
Ouvrez un navigateur et connectez-vous à votre portail Azure .
Cliquez sur Inscriptions d'applications dans le menu de gauche.
Figure 1 : Page d'accueil du portail Azure AD
Cliquez sur le bouton Nouvelle inscription .
Figure 2 : Inscription à l'application Azure AD
Pour créer une nouvelle application, fournissez un nom , une URI de redirection et cliquez sur le bouton Enregistrer . Dans cette démo, vous utiliserez Postman , vous utiliserez donc l' URI de redirection Postman OIDC .
Figure 3 : Créer une nouvelle application Azure AD
Maintenant que votre application est créée, vous devez créer des étendues OAuth pour fournir l'accès à l'API. Cliquez sur le lien Exposer une API dans le menu de gauche.
Figure 4 : Exposer une API
Cliquez sur Ajouter une portée .
Figure 5 : Ajouter une portée
Acceptez l’URI d’ID d’application par défaut ou créez le vôtre et cliquez sur le bouton Enregistrer et continuer . Si vous souhaitez créer votre propre URI d’ID d’application, vous devez enregistrer le domaine souhaité auprès d’Azure AD.
Figure 6 : URL de l'identifiant de l'application
Pour cette démo, votre périmètre est basé sur un exemple Microsoft. Remplissez le formulaire avec les informations suivantes puis cliquez sur le bouton Ajouter une portée :
Nom de la portée : Employés.Lisez.Tout.
Qui peut consentir ? : Administrateurs et utilisateurs
Nom d'affichage du consentement de l'administrateur : Accès en lecture seule aux dossiers des employés
Description du consentement de l'administrateur : Autoriser l'accès en lecture seule à toutes les données des employés.
Nom d'affichage du consentement de l'utilisateur : Accès en lecture seule à vos dossiers d'employés
Description du consentement de l'utilisateur : Autorisez l'accès en lecture seule à vos données d'employés.
Figure 7 : Ajouter une portée
Ensuite, vous devez autoriser l’application cliente. Pour ce faire, récupérez l'ID client. Cliquez sur le lien Présentation dans le menu de gauche et copiez l' ID d'application (client) .
Figure 8 : ID client de l'application
Cliquez à nouveau sur le lien Exposer une API , puis cliquez sur le bouton Ajouter une application cliente .
Figure 9 : Ajouter une application cliente
Collez l'ID client de l'application dans le champ ID client et cochez la case en regard de l'URI de votre ID d'application. Cliquez ensuite sur le bouton Ajouter une application .
Figure 10 : Ajouter une application cliente
Ensuite, pour cette démo, vous utiliserez un code d’autorisation avec le flux de code d’autorisation , donc un secret client sera nécessaire pour Postman. Cliquez sur le lien Certificats et secrets dans le menu de gauche, puis cliquez sur le bouton Nouveau secret client .
Figure 11 : Nouveau secret client
Nommez votre secret et laissez le délai d'expiration par défaut.
Figure 12 : Nom secret
Ensuite, copiez votre secret client et stockez-le dans un coffre-fort de mots de passe afin de pouvoir l’utiliser ultérieurement.
Figure 13 : Secret du client
Maintenant que votre application Azure AD est configurée, vous pouvez configurer le cluster de passerelle API dans API Connectivity Manager pour effectuer une assertion de jeton Web JSON pour votre service défini. Pour cette étape, vous devez déterminer l’URI des ensembles de clés Web JSON (JWK) de votre locataire Azure AD.
Vous pouvez obtenir votre URI JWKS à partir du Point de terminaison bien connu du locataire Azure AD:
https://login.microsoftonline.com/<tenant-id>/v2.0/.well-known/openid-configuration
Cette page fournira une charge utile JSON contenant la clé jwks_uri . Vous devrez copier sa valeur.
Figure 14 : Point de terminaison bien connu du locataire Azure AD
Maintenant que vous disposez de votre URI JWKS, ouvrez votre console API Connectivity Manager et accédez à la configuration de votre proxy de service. Cliquez sur Ajouter une politique pour la politique d’assertion de jeton Web JSON .
Figure 15 : Politiques de proxy du service de passerelle
Ensuite, collez l’URI JKWS de votre locataire Azure AD dans le champ Emplacement de l’URI , puis cliquez sur le bouton Ajouter .
Figure 16 : Politique d'assertion de jeton Web JSON
Cliquez sur le bouton Enregistrer et publier pour envoyer cette politique à votre cluster de passerelle API.
Figure 17 : Politique de passerelle de service
C'est ça! Votre instance API Connectivity Manager est désormais configurée pour effectuer une assertion JWT sur la passerelle de service configurée.
Il est maintenant temps de tester votre configuration et de vous assurer qu’elle se comporte comme prévu. Pour commencer, vous devez obtenir quelques éléments de votre application Azure AD :
Pour obtenir l’étendue OAuth, ouvrez votre portail Azure et revenez à la page d’inscription de votre application. Ensuite, cliquez sur le lien Exposer une API dans le menu de gauche et cliquez sur le symbole Copier pour votre portée. Enregistrez cette valeur afin de pouvoir l'utiliser dans quelques minutes.
Figure 18 : Portées de l'API
Pour obtenir les points de terminaison d’autorisation et de jeton OAuth, cliquez sur le lien Présentation dans le menu de gauche, puis cliquez sur le bouton Points de terminaison . Après cela, copiez les URI du point de terminaison d’autorisation et de jeton.
Figure 19 : Points de terminaison d'application Azure AD
Figure 20 : URL des points de terminaison d'application Azure AD
Ouvrez Postman et cliquez sur le menu Environnements . Cliquez ensuite sur le lien Créer un environnement .
Figure 21 : Environnement de création du facteur
Nommez votre environnement et ajoutez six variables avec les valeurs (enregistrées lors des étapes précédentes) dans la colonne Valeur initiale et la colonne Valeur actuelle , puis cliquez sur le bouton Enregistrer .
Figure 22 : Variables d'environnement du facteur
Ouvrez un nouvel onglet dans Postman et suivez ces étapes :
Figure 23 : Demande du facteur
Figure 24 : Configuration de l'authentification du facteur
Une fenêtre de navigateur s’ouvrira et vous serez invité à vous connecter avec vos informations d’identification Azure AD. Une fois authentifié avec succès, vous serez redirigé vers Postman et la fenêtre suivante apparaîtra. Cliquez sur le bouton Utiliser le jeton .
Figure 25 : Jeton d'utilisation du facteur
Maintenant que vous disposez de votre jeton d’accès OAuth, vous pouvez enfin effectuer votre appel API. Cliquez sur le bouton Enregistrer , puis sur le bouton Envoyer .
Si tout est configuré correctement, vous devriez voir une réponse 200 OK.
Figure 26 : Demande réussie du facteur
Vous disposez désormais d’API Connectivity Manager qui protège vos API à l’aide de jetons d’accès OAuth Azure AD. Les prochaines étapes consisteraient à ajouter des étendues OAuth supplémentaires et à configurer le cluster de passerelle API dans API Connectivity Manager pour transmettre ces étendues à vos API protégées – mais c’est un sujet pour un autre article !
Démarrez un essai gratuit de 30 jours de NGINX Management Suite , qui comprend API Connectivity Manager et Instance Manager .
Une version de cet article est parue pour la première fois sur codygreen.com . Il est édité et réimprimé ici avec la permission de l'auteur.
« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."