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.
Pendant le développement local, les applications doivent s’authentifier auprès d’Azure pour utiliser différents services Azure. Authentifiez-vous localement à l’aide de l’une des approches suivantes :
- Utilisez un compte de développeur avec l’un des outils de développement pris en charge par la bibliothèque Azure Identity.
- Utilisez un service principal.
Cet article explique comment s’authentifier à l’aide d’un compte de développeur avec des outils pris en charge par la bibliothèque Azure Identity. Dans les sections à venir, vous allez apprendre :
- Comment utiliser des groupes Microsoft Entra pour gérer efficacement les autorisations pour plusieurs comptes de développeur.
- Comment attribuer des rôles à des comptes de développeurs pour définir les autorisations.
- Comment se connecter aux outils de développement locaux pris en charge.
- Comment s’authentifier à l’aide d’un compte de développeur à partir de votre code d’application.
Outils de développement pris en charge pour l’authentification
Pour qu’une application s’authentifie auprès d’Azure pendant le développement local à l’aide des informations d’identification Azure du développeur, le développeur doit être connecté à Azure à l’aide d’Azure CLI.
La bibliothèque d’identités Azure peut détecter que le développeur est connecté à partir de l’outil. La bibliothèque peut ensuite obtenir le jeton d’accès Microsoft Entra via l’outil pour authentifier l’application auprès d’Azure en tant qu’utilisateur connecté.
Cette approche tire parti des comptes Azure existants du développeur pour simplifier le processus d’authentification. Toutefois, le compte d’un développeur a probablement plus d’autorisations que nécessaire par l’application, ce qui dépasse les autorisations avec laquelle l’application s’exécute en production. En guise d’alternative, vous pouvez créer des principaux de service d’application à utiliser pendant le développement local, qui peuvent être limités pour avoir uniquement l’accès nécessaire par l’application.
Créer un groupe Microsoft Entra pour le développement local
Créez un groupe Microsoft Entra pour encapsuler les rôles (autorisations) dont l’application a besoin dans le développement local plutôt que d’affecter les rôles à des objets de principal de service individuels. Cette approche offre les avantages suivants :
- Chaque développeur a les mêmes rôles attribués au niveau du groupe.
- Si un nouveau rôle est nécessaire pour l’application, il doit uniquement être ajouté au groupe de l’application.
- Si un nouveau développeur rejoint l’équipe, un nouveau principal du service d’application est créé pour le développeur et ajouté au groupe, ce qui garantit que le développeur dispose des autorisations appropriées pour travailler sur l’application.
Accédez à la page de vue d’ensemble Microsoft Entra ID dans le portail Azure.
Sélectionnez Tous les groupes dans le menu de gauche.
Dans la page Groupes , sélectionnez Nouveau groupe.
Dans la page Nouveau groupe , renseignez les champs de formulaire suivants :
- type de groupe: sélectionnez la sécurité .
- Nom du groupe : entrez un nom pour le groupe qui inclut une référence à l’application ou au nom de l’environnement.
- Description du groupe : entrez une description qui explique l’objectif du groupe.
Sélectionnez le lien Aucun membre sélectionné sous Membres pour ajouter des membres au groupe.
Dans le volet volant qui s’ouvre, recherchez le principal de service que vous avez créé précédemment et sélectionnez-le dans les résultats filtrés. Choisissez le bouton Sélectionner en bas du panneau pour confirmer votre sélection.
Sélectionnez Créer en bas de la page Nouveau groupe pour créer le groupe et revenir à la page Tous les groupes . Si vous ne voyez pas le nouveau groupe répertorié, attendez un instant et actualisez la page.
Attribuer des rôles au groupe
Ensuite, déterminez les rôles (autorisations) dont votre application a besoin sur les ressources et attribuez ces rôles au groupe Microsoft Entra que vous avez créé. Les groupes peuvent être affectés à un rôle au niveau de la ressource, du groupe de ressources ou de l’étendue de l’abonnement. Cet exemple montre comment attribuer des rôles à l’étendue du groupe de ressources, car la plupart des applications regroupent toutes leurs ressources Azure dans un seul groupe de ressources.
Dans le portail Azure, accédez à la page Vue d’ensemble du groupe de ressources qui contient votre application.
Dans le menu de navigation de gauche, sélectionnez Contrôle d’accès (IAM) .
Dans la page Contrôle d’accès (IAM), sélectionnez + Ajouter , puis choisissez Ajouter une attribution de rôle dans le menu déroulant. La page Ajouter une attribution de rôle fournit plusieurs onglets pour configurer et attribuer des rôles.
Sous l’onglet Rôle , utilisez la zone de recherche pour localiser le rôle que vous souhaitez attribuer. Sélectionnez le rôle, puis choisissez Suivant.
Sous l’onglet Membres :
- Pour la valeur Attribuer l’accès à, sélectionnez Utilisateur, groupe ou principal de service.
- Pour la valeur Membres , choisissez + Sélectionner des membres pour ouvrir le volet volant Sélectionner des membres .
- Recherchez le groupe Microsoft Entra que vous avez créé précédemment et sélectionnez-le dans les résultats filtrés. Choisissez Sélectionner pour choisir le groupe et fermer le volet déroulant.
- Sélectionnez Vérifier + affecter en bas de l’onglet Membres .
Sous l’onglet Révision + affectation , sélectionnez Vérifier + affecter en bas de la page.
Se connecter à Azure à l’aide des outils de développement
Connectez-vous à Azure à l’aide de l’un des outils de développement qui peuvent être utilisés pour effectuer l’authentification dans votre environnement de développement. Le compte que vous authentifiez doit également exister dans le groupe Microsoft Entra que vous avez créé et configuré précédemment.
Azure CLI
Les développeurs peuvent utiliser Azure CLI pour s’authentifier. Les applications utilisant DefaultAzureCredential ou AzureCliCredential peuvent ensuite utiliser ce compte pour authentifier les demandes d’application.
Pour vous authentifier auprès d’Azure CLI, exécutez la az login commande. Sur un système avec un navigateur web par défaut, Azure CLI lance le navigateur pour authentifier l’utilisateur.
az login
Pour les systèmes sans navigateur web par défaut, la commande az login utilise le flux d’authentification du code d’appareil. L’utilisateur peut également forcer Azure CLI à utiliser le flux de code de l’appareil plutôt que de lancer un navigateur en spécifiant l’argument --use-device-code.
az login --use-device-code
S’authentifier auprès des services Azure à partir de votre application
La bibliothèque Azure Identity pour C++ fournit différentes informations d’identification adaptées à la prise en charge de différents scénarios et flux d’authentification Microsoft Entra. Les étapes à suivre montrent comment utiliser DefaultAzureCredential quand vous utilisez des comptes d’utilisateur localement.
Implémenter le code
La classe DefaultAzureCredential est une séquence ordonnée de mécanismes pour l’authentification auprès de l’ID Microsoft Entra. Chaque mécanisme d’authentification est une classe dérivée de la TokenCredential classe et est appelée informations d’identification. Dans ce scénario, DefaultAzureCredential vérifie de manière séquentielle si le développeur s’est connecté à Azure à l’aide d’Azure CLI. Si le développeur est connecté à Azure CLI, les informations d’identification utilisées pour se connecter à l’outil sont utilisées par l’application pour s’authentifier auprès d’Azure. Pour plus d’informations sur la personnalisation de la chaîne d’informations d’identification, consultez Comment personnaliser DefaultAzureCredential.
Ajoutez le package azure-identity-cpp à votre application à l’aide de vcpkg.
vcpkg add port azure-identity-cppAjoutez les lignes suivantes dans votre fichier CMake :
find_package(azure-identity-cpp CONFIG REQUIRED) target_link_libraries(<your project name> PRIVATE Azure::azure-identity)Pour tout code C++ qui crée un objet client azure SDK dans votre application, vous souhaitez :
Incluez l’en-tête
azure/identity.hpp.Utilisez
DefaultAzureCredentialouAzureCliCredentialpour créer une instance d’informations d’identification. Par exemple:Pour utiliser
DefaultAzureCredential, définissez la variableAZURE_TOKEN_CREDENTIALSd’environnement surdevce qui indique que l’application est en cours d’exécution dans un environnement de développement. Pour plus d’informations, consultez Comment personnaliser DefaultAzureCredential.// Environment variable AZURE_TOKEN_CREDENTIALS=dev auto credential = std::make_shared<Azure::Identity::DefaultAzureCredential>(true);Ou utilisez toujours
AzureCliCredentialpour l’authentification avec l’utilisateur connecté à Azure CLI.auto credential = std::make_shared<Azure::Identity::AzureCliCredential>();
Passez l’instance de
DefaultAzureCredentialouAzureCliCredentialau constructeur du client SDK Azure.
Un exemple de ces étapes est illustré dans le segment de code suivant. L'exemple crée un client Blob d'Azure Storage en utilisant
DefaultAzureCredentialpour s'authentifier auprès d'Azure.#include <azure/identity.hpp> #include <azure/storage/blobs.hpp> #include <iostream> #include <memory> int main() { try { // DefaultAzureCredential supports dev, test, and prod environments. // See documentation for details on customizing the credential chain: // https://learn.microsoft.com/azure/developer/cpp/sdk/authentication/credential-chains#defaultazurecredential-overview // In production, it's better to use a specific credential type so authentication is more predictable and easier to debug. // Here DefaultAzureCredential is used for local development and environment variable AZURE_TOKEN_CREDENTIALS=dev auto credential = std::make_shared<Azure::Identity::DefaultAzureCredential>(true); // Or use AzureCliCredential to always use the Azure CLI signed-in user to authenticate // auto credential = std::make_shared<Azure::Identity::AzureCliCredential>(); // Create a client for the specified storage account std::string accountUrl = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/"; Azure::Storage::Blobs::BlobServiceClient blobServiceClient(accountUrl, credential); // Get a reference to a container std::string containerName = "sample-container"; auto containerClient = blobServiceClient.GetBlobContainerClient(containerName); // TODO: perform some action with the blob client // auto blobClient = containerClient.GetBlobClient("sample-blob"); // auto downloadResult = blobClient.DownloadTo("path/to/local/file"); } catch (const std::exception& ex) { std::cout << "Exception: " << ex.what() << std::endl; return 1; } return 0; }