Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure DevOps Services
Importante
Azure DevOps OAuth est déconseillé et planifié pour la suppression en 2026. Cette documentation concerne uniquement les applications OAuth Azure DevOps existantes. Les nouvelles inscriptions d’applications ne sont plus acceptées à compter d’avril 2025.
Pour les nouvelles applications : utilisez Microsoft Entra ID OAuth pour l’intégrer à Azure DevOps.
Pour les applications existantes : planifiez votre migration vers L’ID OAuth Microsoft Entra avant 2026.
Cet article explique comment Azure DevOps OAuth 2.0 fonctionne pour les applications existantes et fournit des conseils pour la maintenance et la migration de vos applications.
Aperçu
Azure DevOps OAuth 2.0 permet aux applications d’accéder aux ressources Azure DevOps pour le compte des utilisateurs. Bien que ce service soit déconseillé, les applications existantes continuent de fonctionner jusqu’en 2026.
Recommandation de migration : commencez à planifier votre migration vers Microsoft Entra ID OAuth pour garantir un service et un accès continus aux fonctionnalités de sécurité améliorées.
Conditions préalables
Avant d’utiliser des applications OAuth Azure DevOps :
| Besoin | Descriptif |
|---|---|
| Inscription d’application existante | Une application OAuth Azure DevOps existante (nouvelles inscriptions arrêtées en avril 2025) |
| Organisation Azure DevOps | Accès à une organisation Azure DevOps Services |
| URL de rappel HTTPS | URL de rappel sécurisée pour votre application |
| Plan de migration | Stratégie de migration vers Microsoft Entra ID OAuth avant 2026 |
Utilisation d’applications OAuth Azure DevOps existantes
1. Gérer votre inscription d’application existante
Remarque
Les nouvelles inscriptions d’applications ne sont plus acceptées. Cette section s’applique uniquement aux applications inscrites existantes.
Pour les applications existantes, vous pouvez afficher et gérer les paramètres de votre application :
Accédez à votre profil Visual Studio pour accéder à vos inscriptions d’application.
Passez en revue vos étendues configurées et vérifiez qu’elles correspondent aux besoins de votre application.
Vérifiez la configuration de votre URL de rappel et mettez à jour si nécessaire.
Planifiez votre calendrier de migration vers Microsoft Entra ID OAuth avant l’échéance de dépréciation de 2026.
2. Autoriser votre application
Le flux d’autorisation reste le même pour les applications OAuth Azure DevOps existantes :
Diriger les utilisateurs vers l’URL d’autorisation avec les paramètres de votre application :
https://app.vssps.visualstudio.com/oauth2/authorize ?client_id={app ID} &response_type=Assertion &state={state} &scope={scope} &redirect_uri={callback URL}Paramètre Type Descriptif client_idGUID ID affecté à votre application lors de son inscription response_typechaîne Doit être Assertionstatechaîne Valeur de chaîne générée qui met en corrélation le rappel avec sa requête d’autorisation scopechaîne Étendues inscrites auprès de l’application, séparées par des espaces. Voir les étendues disponibles redirect_uriURL URL de rappel de votre application. Doit correspondre exactement à l’URL inscrite auprès de l’application Exemple d’URL d’autorisation :
https://app.vssps.visualstudio.com/oauth2/authorize ?client_id=00001111-aaaa-2222-bbbb-3333cccc4444 &response_type=Assertion &state=User1 &scope=vso.work%20vso.code_write &redirect_uri=https://fabrikam.azurewebsites.net/myapp/oauth-callbackAprès l’autorisation de l’utilisateur, Azure DevOps redirige vers votre URL de rappel avec le code d’autorisation :
https://fabrikam.azurewebsites.net/myapp/oauth-callback ?code={authorization code} &state=User1
3. Code d’autorisation Exchange pour le jeton d’accès
Utilisez le code d’autorisation pour demander un jeton d’accès et actualiser le jeton :
Détails de la requête
URL
POST https://app.vssps.visualstudio.com/oauth2/token
En-têtes
Content-Type: application/x-www-form-urlencoded
Corps de la demande
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion={0}&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion={1}&redirect_uri={2}
Substitution de paramètre :
{0}: secret client encodé en URL à partir de l'enregistrement de l'application{1}: code d’autorisation encodé en URL depuis le "callback"{2}: URL de rappel inscrite auprès de l’application
Exemple d’implémentation C#
public string GenerateRequestPostData(string appSecret, string authCode, string callbackUrl)
{
return String.Format("client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion={0}&grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion={1}&redirect_uri={2}",
HttpUtility.UrlEncode(appSecret),
HttpUtility.UrlEncode(authCode),
callbackUrl
);
}
Réponse
{
"access_token": "{ access token for the user }",
"token_type": "{ type of token }",
"expires_in": "{ time in seconds that the token remains valid }",
"refresh_token": "{ refresh token to use to acquire a new access token }"
}
Importante
Stockez en toute sécurité le jeton d’actualisation : les jetons d’accès expirent rapidement, mais les jetons d’actualisation vous permettent d’obtenir de nouveaux jetons d’accès sans nécessiter de réauthorisation de l’utilisateur.
4. Utiliser le jeton d’accès
Incluez le jeton d’accès en tant que jeton du porteur dans vos demandes d’API :
Format d’en-tête d’autorisation :
Authorization: Bearer {access_token}
Exemple de demande d’API :
GET https://dev.azure.com/myaccount/myproject/_apis/build-release/builds?api-version=3.0
Authorization: Bearer {access_token}
5. Actualiser les jetons d’accès expirés
Lorsque les jetons d’accès expirent, utilisez le jeton d’actualisation pour obtenir un nouveau jeton d’accès :
Requête :
POST https://app.vssps.visualstudio.com/oauth2/token
Content-Type: application/x-www-form-urlencoded
Content-Length: 1654
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_assertion={0}&grant_type=refresh_token&assertion={1}&redirect_uri={2}
Substitution de paramètre :
{0}: clé secrète du client encodée en URL{1}: jeton d’actualisation encodé par URL{2}: URL de rappel inscrite auprès de l’application
Réponse :
{
"access_token": "{ new access token }",
"token_type": "{ type of token }",
"expires_in": "{ time in seconds that the token remains valid }",
"refresh_token": "{ new refresh token }"
}
Importante
Mettez à jour votre jeton d’actualisation : un nouveau jeton d’actualisation est émis avec chaque actualisation. Stockez le nouveau jeton et utilisez-le pour les futures opérations d’actualisation.
Exemples de code
Vous trouverez des exemples de travail dans notre référentiel d’exemples d’authentification Azure DevOps.
Gestion des secrets d’application
Importante
La rotation des secrets est essentielle pour la sécurité. Les secrets d’application expirent tous les 60 jours et doivent être renouvelés pour maintenir l’accès.
Les applications Azure DevOps OAuth prennent en charge les secrets doubles pour permettre une rotation sans interruption :
Faire pivoter les clés secrètes
Générez un nouveau secret dans votre profil Visual Studio ou via les API de secret d’inscription.
Confirmez l’action dans la boîte de dialogue modale.
Mettez à jour votre application pour utiliser le nouveau secret avant l’expiration de l’ancien.
Testez soigneusement le nouveau secret avant l’expiration de l’ancien secret.
Répétez le processus lorsque le nouveau secret approche de l’expiration.
Révocation de secrets d’urgence
Si un secret est compromis :
- Régénérer immédiatement le secret dans votre profil.
- Mettez à jour votre application avec le nouveau secret.
- Surveillez l’accès non autorisé dans les journaux de votre application.
Avertissement
La régénération d’un secret invalide immédiatement le secret précédent et tous les jetons créés avec celui-ci.
Supprimer votre application
Avertissement
La suppression d’une inscription d’application interrompt immédiatement toutes les applications qui l’utilisent et invalide tous les jetons associés.
Pour supprimer une application OAuth Azure DevOps :
Accédez à votre profil Visual Studio.
Sélectionnez le locataire approprié dans le menu déroulant.
Recherchez votre application sous Applications et services.
Sélectionnez Supprimer dans la page d’inscription de l’application.
Confirmez la suppression dans la boîte de dialogue modale.
Après la suppression, l’application et tous ses jetons d'authentification cessent de fonctionner immédiatement.
Planification de migration
Importante
Commencez à planifier votre migration maintenant. Azure DevOps OAuth est prévu pour la suppression en 2026.
Liste des éléments à vérifier pour la migration
- [ ] Consulter la documentation OAuth de Microsoft Entra ID
- [ ] Identifier toutes les applications à l’aide d’Azure DevOps OAuth dans votre organisation
- [ ] Planifier la chronologie de la migration , ce qui permet un temps de test adéquat
- [ ] Mettre à jour l’architecture d’application pour prendre en charge Microsoft Entra ID OAuth
- [ ] Tester la migration dans un environnement hors production
- [ ] Communiquer les modifications aux utilisateurs et aux parties prenantes
- [ ] Effectuer la migration avant l’échéance 2026
Avantages de la migration
Fonctionnalités de sécurité améliorées :
- Prise en charge de l’authentification multifacteur
- Stratégies d’accès conditionnel
- Détection avancée des menaces
- Intégration des identités d’entreprise
Meilleure expérience pour les développeurs :
- Bibliothèques d’authentification modernes (MSAL)
- Plateforme d’identité cohérente entre les services Microsoft
- Meilleure gestion et mise en cache des jetons
Prise en charge à long terme :
- Développement continu des investissements et fonctionnalités
- Fonctionnalités de conformité et de gouvernance d’entreprise
Questions fréquentes
Q : Puis-je toujours créer des applications OAuth Azure DevOps ?
R : Non. Les nouvelles inscriptions d’applications ont cessé en avril 2025. Utilisez l’ID OAuth Microsoft Entra pour les nouvelles applications.
Q : Quand mon application OAuth Azure DevOps existante cessera-t-elle de fonctionner ?
R : Les applications existantes continuent de fonctionner jusqu’à ce qu’Azure DevOps OAuth soit entièrement déconseillé en 2026. Planifiez votre migration bien avant cette échéance.
Q : Puis-je utiliser OAuth avec des applications mobiles ?
R : Azure DevOps OAuth prend uniquement en charge le flux de serveur web et nécessite un stockage sécurisé des secrets client, ce qui le rend inadapté aux applications mobiles. Microsoft Entra ID OAuth offre une meilleure prise en charge des applications mobiles.
Q : Que dois-je faire si j’obtiens une erreur HTTP 400 lors de la demande de jetons ?
R : Causes courantes :
- En-tête incorrect
Content-Type(doit êtreapplication/x-www-form-urlencoded) - Paramètres de corps de requête mal formés
- Code d’autorisation non valide ou expiré
- URL de rappel incompatible
Q : Pourquoi obtenir des erreurs HTTP 401 avec des jetons OAuth, mais pas avec des PAT ?
R : Vérifiez si l’administrateur de votre organisation a désactivé l’accès aux applications tierces via OAuth à l’adresse suivante : https://dev.azure.com/{your-org-name}/_settings/organizationPolicy
En cas de désactivation, les flux d’autorisation OAuth fonctionnent, mais les appels d’API retournent TF400813: The user "<GUID>" is not authorized to access this resource.
Q : Puis-je utiliser localhost pour les tests ?
A : Oui. Azure DevOps OAuth supporte les URL de rappel https://localhost pour le développement et les tests locaux.
Q : Comment gérer les refus d’autorisation et les révocations ?
R : Implémentez une gestion des erreurs appropriée pour :
- Déni d’autorisation : aucun code d’autorisation n’est retourné dans le rappel
- Autorisation révoquée : les appels d’API retournent des erreurs 401 ; demander une autorisation de nouveau à l’utilisateur
Q : Quelle est la différence entre Azure DevOps OAuth et Microsoft Entra ID OAuth ?
A :
- Azure DevOps OAuth : déconseillé, fonctionnalités de sécurité limitées spécifiques à Azure DevOps
- Microsoft Entra ID OAuth : Sécurité moderne, professionnelle, renforcée, support à long terme
Étapes suivantes
Pour les applications existantes :
Pour les nouvelles applications :