Azure devops get token
Gérer les jetons d’accès personnels (PAT) à l’aide de l’API REST
Azure DevOps Services
Lorsque vous traitez un grand nombre de jetons d’accès personnels (PAT) que vous possédez, il peut devenir complexe de gérer la maintenance de ces jetons à l’aide de l’interface utilisateur uniquement.
Avec l’API de gestion du cycle de vie des PAT, vous pouvez facilement gérer les PAT associés à vos organisations à l’aide de processus automatisés. Cet ensemble complet d’API vous permet de gérer vos PAT, ce qui vous permet de créer de nouveaux PAT et de renouveler ou d’expirer les PAT existants.
Dans cet article, nous vous montrons comment configurer une application qui s’authentifie avec un jeton Microsoft Entra et effectue des appels avec l’API de cycle de vie PAT. Si vous souhaitez simplement voir la liste complète des points de terminaison disponibles, consultez la référence de l’API ici.
Conditions préalables
- Autorisations : En fonction de les politiques de sécurité de votre locataire, votre application peut avoir besoin d’autorisations pour accéder aux ressources de l’organisation. À ce stade, la seule façon de procéder à l’utilisation de cette application dans ce locataire est de demander à un administrateur d’accorder l’autorisation à l’application avant de pouvoir l’utiliser.
Remarque
Vous ne pouvez pas utiliser des principaux de service ou des identités managées pour créer ou révoquer des PAT.
S’authentifier avec des jetons Microsoft Entra
Contrairement à d’autres API Azure DevOps Services, les utilisateurs doivent fournir un jeton d’accès Microsoft Entra pour utiliser cette API au lieu d’un PAT. Les jetons Microsoft Entra constituent un mécanisme d’authentification plus sûr que l’utilisation des PAT. Étant donné la capacité de cette API à créer et à révoquer des PAT, nous voulons nous assurer que ces fonctionnalités puissantes ne sont données qu’aux utilisateurs autorisés.
Pour acquérir et actualiser des jetons d’accès Microsoft Entra, effectuez les tâches suivantes :
Les
solutions importantes « Application de la part de » (telles que le flux d’informations d’identification du client) et tout flux d’authentification qui n’émet pas de jeton d’accès Microsoft Entra ne sont pas valides pour une utilisation avec cette API. Si l’authentification multifacteur est activée dans votre locataire Microsoft Entra, vous devez absolument utiliser le flux « code d’autorisation ».
Une fois que vous disposez d’une application avec un flux d’authentification fonctionnel pour gérer les jetons Microsoft Entra, vous pouvez utiliser ces jetons pour effectuer des appels à l’API de gestion du cycle de vie PAT.
Pour appeler directement l’API, fournissez un jeton d’accès Microsoft Entra en tant que jeton dans l’en-tête de votre demande. Pour plus d’informations et une liste complète des requêtes disponibles, consultez la référence de l’API PAT.
Dans la section suivante, nous montrons comment créer une application qui authentifie un utilisateur avec un jeton d’accès Microsoft Entra. L’application utilise la bibliothèque d’authentification Microsoft (MSAL) et appelle notre API de gestion du cycle de vie PAT.
Le MSAL comprend plusieurs flux d’authentification conformes que vous pouvez utiliser dans votre application pour acquérir et actualiser des jetons Microsoft Entra. Une liste complète des flux MSAL est disponible dans la documentation sur les flux d’authentification de la bibliothèque d’authentification Microsoft. Vous trouverez un guide sur le choix de la méthode d’authentification appropriée pour votre application sous Choix de la méthode d’authentification appropriée pour Azure DevOps.
Pour commencer, consultez l’un des exemples suivants :
Cloner notre application web Python Flask
Nous vous avons fourni un exemple d’application web Python Flask pour cette API que vous pouvez télécharger sur GitHub et configurer pour l’utiliser avec votre locataire Microsoft Entra et votre organisation Azure DevOps. L’exemple d’application utilise le flux de code d’authentification MSAL pour acquérir un jeton d’accès Microsoft Entra.
important
Nous vous recommandons de commencer à utiliser l’exemple d’application web Python Flask sur GitHub, mais si vous préférez utiliser un autre langage ou type d’application, utilisez l’option de démarrage rapide pour recréer une application de test équivalente.
Une fois que vous avez cloné l’exemple d’application, suivez les instructions du fichier README du dépôt. Le fichier README explique comment inscrire une application dans votre locataire Microsoft Entra, configurer l’exemple pour utiliser votre locataire Microsoft Entra et exécuter votre application clonée.
Générer une application de portail Azure de démarrage rapide
Au lieu de cela, vous pouvez générer un exemple d’application avec le code MSAL généré à l’aide de l’option de démarrage rapide sur la page de l’application dans le portail Azure. L’application de test de démarrage rapide suit le flux de code d’autorisation, mais le fait avec un point de terminaison d’API Microsoft Graph. Les utilisateurs doivent mettre à jour la configuration de l’application pour qu’elle pointe vers le point de terminaison pour le PAT API de gestion du cycle de vie.
Pour suivre cette approche, suivez les instructions de démarrage rapide pour le type d’application de votre choix sur la page d’accueil de la documentation Microsoft Entra ID Develop. Nous parcourons l’exemple suivant avec une application de démarrage rapide Python Flask.
Exemple : Prise en main d’une application de démarrage rapide Python Flask
-
Une fois que vous avez inscrit votre application dans un locataire Microsoft Entra qui dispose d’un abonnement Azure actif, accédez à votre application inscrite sous Microsoft Entra ID -> Inscriptions d’applications dans le portail Azure.
-
Sélectionnez votre application et accédez à Autorisations API .
-
Sélectionnez Ajouter une autorisation, puis Azure DevOps -> vérifier user_impersonation -> sélectionnez Ajouter des autorisations .
-
Sélectionnez Démarrage rapide .
-
Sélectionnez votre type d’application : pour Python Flask, sélectionnez Application Web .
-
Sélectionnez votre plate-forme d’application. Pour ce tutoriel, sélectionnez Python .
-
Assurez-vous de remplir les conditions préalables nécessaires, puis autorisez le portail Azure à apporter les modifications nécessaires pour configurer votre application. L’URL de réponse est l’URL de redirection qui a été définie lors de la création de l’application + « /getAToken ».
-
Téléchargez l’application de démarrage rapide et extrayez les fichiers.
-
Installez la configuration requise de l’application et exécutez l’application pour vous assurer que Vous avez toutes les dépendances nécessaires. L’application est initialement configurée pour atteindre un point de terminaison dans l’API Microsoft Graph. Découvrez comment remplacer ce point de terminaison par le point de terminaison de base de l’API de gestion du cycle de vie PAT en suivant les instructions de configuration de la section suivante.
Une
fois que l’utilisateur a téléchargé et installé l’application de démarrage rapide, celle-ci est configurée pour utiliser un point de terminaison d’API de test à partir de Microsoft Graph. Modifiez le fichier de configuration généré pour qu’il appelle l’API de gestion du cycle de vie PAT à la place.
Conseil
: dans ces documents, nous utilisons la collection et l’organisation de manière interchangeable. Si une variable de configuration a besoin d’un nom de collection, remplacez-le par le nom de votre organisation.
Effectuez les tâches suivantes :
- Mettre à jour la configuration du point de terminaison pour les API de gestion du cycle de vie PAT
- Mettez à jour la variable de configuration SCOPE sur « 499b84ac-1321-427f-aa17-267ca6975798/.default » pour faire référence à la ressource Azure DevOps et à toutes ses étendues.
L’exemple suivant vous montre comment nous avons effectué cette configuration pour l’application Python Flask de démarrage rapide que nous avons générée via le portail Azure dans la section précédente.
Assurez-vous de suivre les instructions pour sécuriser votre clé secrète client, qui est initialement insérée en texte brut dans le fichier de configuration de l’application. Il est recommandé de supprimer la variable de texte brut du fichier de configuration et d’utiliser une variable d’environnement ou Azure KeyVault pour sécuriser le secret de leur application.
Au lieu de cela, vous pouvez choisir d’utiliser un certificat au lieu d’une clé secrète client. L’utilisation de certificats est recommandée si l’application obtient utilisé dans la production. Les instructions d’utilisation d’un certificat se trouvent à l’étape finale de la configuration de l’application de démarrage rapide.
Attention
: Ne laissez jamais de clé secrète client en texte brut dans le code de l’application de production.
Exemple : Configurer une application de démarrage rapide Python Flask pour l’API de gestion du cycle de vie PAT
-
Une fois que vous avez téléchargé votre application de démarrage rapide, installé ses dépendances et testé qu’elle s’exécute dans votre environnement, ouvrez le fichier dans l’éditeur de votre choix. Le fichier doit ressembler à l’extrait de code suivant ; pour plus de clarté, les commentaires faisant référence à la configuration par défaut de l’API Microsoft Graph ont été supprimés :
-
Mettez à jour l’ID client ou la clé secrète client de votre application avec l’ID client et la clé secrète client de votre inscription d’application. En production, assurez-vous de sécuriser la clé secrète client à l’aide d’une variable d’environnement, Azure KeyVault ou en passant à un certificat.
-
Remplacez la variable par l’URL de votre collection Azure DevOps et votre point de terminaison d’API. Par exemple, pour une collection nommée « testCollection », la valeur serait :
Pour une collection nommée « testCollection », ce point de terminaison serait :
-
Modifiez la variable pour qu’elle fasse référence à la ressource de l’API Azure DevOps ; la chaîne de caractères est l’ID de ressource de l’API Azure DevOps et l’étendue fait référence à toutes les étendues de cet ID de ressource.
-
Si votre application est configurée pour un locataire spécifique (plutôt que pour la configuration multilocataire), utilisez la valeur alternative pour la variable, en ajoutant le nom du locataire spécifique dans « Enter_the_Tenant_Name_Here ».
-
Vérifiez que le fichier final correspond aux éléments suivants, avec votre CLIENT_ID, votre ID de locataire et l’URL de votre collection. Pour des raisons de sécurité, assurez-vous que le CLIENT_SECRET a été déplacé vers une variable d’environnement, Azure KeyVault, ou échangé avec un certificat pour votre application inscrite :
-
réexécutez l’application pour vérifier que vous pouvez OBTENIR tous les jetons PAT pour l’utilisateur demandeur. Une fois vérifié, vous pouvez modifier le contenu et le répertoire pour prendre en charge l’envoi de demandes aux autres points de terminaison de l’API de gestion du cycle de vie PAT. Pour obtenir un exemple d’application de démarrage rapide Python Flask qui a été modifiée pour prendre en charge les demandes adressées à tous les points de terminaison de l’API de gestion du cycle de vie PAT, consultez cet exemple de référentiel sur GitHub.
Une
fois que l’application est correctement configurée et que l’utilisateur a acquis un jeton d’accès, le jeton peut être utilisé pendant une heure maximum. Le code MSAL fourni dans les deux exemples précédents actualise automatiquement le jeton une fois qu’il expire. L’actualisation du jeton évite à l’utilisateur d’avoir à signer et obtenez un nouveau code d’autorisation. Toutefois, les utilisateurs peuvent avoir besoin de se reconnecter après 90 jours une fois que leur jeton d’actualisation a expiré.
Explorer les API de gestion du cycle de vie PAT
Dans l’exemple d’application GitHub et les applications de démarrage rapide précédents, l’application est préconfigurée pour effectuer des requêtes avec les jetons Microsoft Entra que vous avez acquis. Pour plus d’informations, consultez la documentation de référence de l’API.
Foire aux questions (FAQ)
Q : Pourquoi dois-je m’authentifier avec un jeton Microsoft Entra ? Pourquoi un PAT n’est-il pas suffisant ?
R : Avec cette API de gestion du cycle de vie des PAT, nous avons ouvert la possibilité de créer de nouveaux PAT et de révoquer les PAT existants. Entre de mauvaises mains, des acteurs malveillants pourraient utiliser cette API pour créer plusieurs points d’entrée dans les ressources Azure DevOps de votre organisation. En appliquant l’authentification Microsoft Entra, nous espérons que cette puissante API sera plus de sécurité contre cette utilisation non autorisée.
Q : Dois-je disposer d’un locataire Microsoft Entra avec un abonnement Azure actif pour utiliser cette API ?
R : Malheureusement, cette API n’est disponible que pour les utilisateurs qui font partie d’un locataire Microsoft Entra avec un abonnement Azure actif.
Q : Puis-je obtenir un exemple de cet exemple d’application pour un autre langage/framework/type d’application ?
R : Nous apprécions le fait que vous souhaitiez utiliser l’API dans la langue de votre choix ! Si vous avez une demande pour un exemple, rendez-vous sur notre communauté de développeurs pour voir si quelqu’un d’autre a un exemple à partager. Si vous avez un exemple d’application que vous souhaitez partager avec un public Azure DevOps plus large, faites-le nous savoir et nous pourrons envisager de le diffuser plus largement sur ces documents !
Q : Quelle est la différence entre cette API de jeton et l’API d’administration de jeton ?
un: Cette API de jeton et l’API d’administration de jeton, bien que similaires, servent des cas d’utilisation et des publics différents :
- Cette API de jeton est principalement destinée aux utilisateurs qui souhaitent gérer les PAT qu’ils possèdent dans un pipeline automatisé. Cette API permet. Il vous donne la possibilité de créer de nouveaux jetons et de mettre à jour les jetons existants.
- L’API d’administration de jeton est destinée aux administrateurs d’organisation. Les administrateurs peuvent utiliser cette API pour récupérer et révoquer les autorisations OAuth, y compris les jetons d’accès personnels (PAT) et les jetons de session auto-descriptifs, des utilisateurs de leurs organisations.
Q : Comment puis-je régénérer/faire pivoter les PAT via l’API ? J’ai vu cette option dans l’interface utilisateur, mais je ne vois pas de méthode similaire dans l’API.
R : Excellente question ! La fonctionnalité « Régénérer » disponible dans l’interface utilisateur accomplit en fait quelques actions, qui sont entièrement reproductibles via l’API.
Pour faire pivoter votre PAT, procédez comme suit :
- Comprendre les métadonnées du PAT à l’aide d’un appel GET,
- Créer un nouveau PAT avec les métadonnées de l’ancien PAT à l’aide d’un appel POST,
- Révoquer l’ancien PAT à l’aide d’un appel DELETE
Q : Je vois une fenêtre contextuelle « Besoin de l’approbation de l’administrateur » lorsque j’essaie de poursuivre l’utilisation de cette application. Comment puis-je utiliser cette application sans l’approbation de l’administrateur ?
R : Il semble que votre locataire dispose de stratégies de sécurité, qui exigent que votre application reçoive des autorisations pour accéder aux ressources de l’organisation. À l’heure actuelle, la seule façon de procéder à l’utilisation de cette application dans ce locataire est de demander à un administrateur d’accorder l’autorisation à l’application avant de pouvoir l’utiliser.
Q : Pourquoi est-ce que je vois une erreur du type « Les principaux de service ne sont pas autorisés à effectuer cette action » lorsque j’essaie de appeler l’API de gestion du cycle de vie PAT à l’aide d’un principal de service ou d’une identité managée ?
R : Les principaux de service et les identités managées ne sont pas autorisés. Étant donné la capacité de cette API à créer et à révoquer des PAT, nous voulons nous assurer que ces fonctionnalités puissantes ne sont données qu’aux utilisateurs autorisés.