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.
++
La bibliothèque d’identités Azure fournit Microsoft Entra ID la prise en charge de l’authentification basée sur les jetons dans le Kit de développement logiciel (SDK) Azure. Il fournit un ensemble d’implémentations TokenCredential qui peuvent être utilisées pour construire des clients du Kit de développement logiciel (SDK) Azure qui prennent en charge l’authentification par jeton Microsoft Entra.
Cette bibliothèque suit les instructions de conception du Kit de développement logiciel (SDK) Azure pour C++.
Code source | Package (vcpkg) | Documentation de | Documentation | Échantillons
Mise en route
Prerequisites
- vcpkg pour l’acquisition de package et la gestion des dépendances
- CMake pour la génération de projet
- Un abonnement Azure
- Azure CLI peut également être utile pour l’authentification dans un environnement de développement, la création de comptes et la gestion des rôles de compte.
Installer le package
Le moyen le plus simple d’acquérir le Kit de développement logiciel (SDK) C++ utilise le gestionnaire de package vcpkg et CMake. Consultez la section lisez-moi correspondante du Kit de développement logiciel (SDK) Azure pour C++. Nous allons utiliser vcpkg en mode manifeste. Pour démarrer un projet vcpkg en mode manifeste, utilisez la commande suivante à la racine de votre projet :
vcpkg new --application
Pour installer le package Azure Identity via vcpkg : pour ajouter le package Azure Identity à votre vcpkg, entrez la commande suivante :
vcpkg add port azure-identity-cpp
Ajoutez ensuite ce qui suit dans votre fichier CMake :
find_package(azure-identity-cpp CONFIG REQUIRED)
target_link_libraries(<your project name> PRIVATE Azure::azure-identity)
N’oubliez pas de définir CMAKE_TOOLCHAIN_FILE le chemin d’accès à l’un ou l’autre vcpkg.cmake en ajoutant ce qui suit à votre CMakeLists.txt fichier avant l’instruction de votre projet :
set(CMAKE_TOOLCHAIN_FILE "vcpkg-root/scripts/buildsystems/vcpkg.cmake")
Ou en le spécifiant dans vos commandes CMake avec l’argument -DCMAKE_TOOLCHAIN_FILE .
Il existe plusieurs façons d’acquérir et d’installer cette bibliothèque. Consultez nos exemples sur différentes façons de configurer votre projet Azure C++.
Authentifier le client
Lors du débogage et de l’exécution de code localement, il est courant qu’un développeur utilise son propre compte pour authentifier les appels aux services Azure. Il existe plusieurs outils de développement qui peuvent être utilisés pour effectuer cette authentification dans votre environnement de développement.
S’authentifier via 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 appels dans leur application lorsqu'elles sont exécutées localement.
Pour vous authentifier auprès d’Azure CLI, les utilisateurs peuvent exécuter la commande az login. Pour les utilisateurs s’exécutant sur un système avec un navigateur web par défaut, Azure CLI lance le navigateur pour authentifier l’utilisateur.
Concepts clés
Credentials
Les informations d’identification sont une classe qui contient ou peut obtenir les données nécessaires pour qu’un client de service authentifie les demandes. Les clients de service dans le Kit de développement logiciel (SDK) Azure acceptent les informations d’identification lorsqu’ils sont construits, et les clients de service utilisent ces informations d’identification pour authentifier les demandes auprès du service.
La bibliothèque d’identités Azure se concentre sur l’authentification OAuth avec l’ID Microsoft Entra et offre une variété de classes d’informations d’identification capables d’acquérir un jeton Microsoft Entra pour authentifier les demandes de service. Toutes les classes d’informations d’identification de cette bibliothèque sont des implémentations de la TokenCredential classe abstraite dans azure-core, et l’une d’entre elles peut être utilisée pour construire des clients de service capables d’s’authentifier avec un TokenCredential.
Pour obtenir la liste complète des types d’informations d’identification disponibles, consultez Classes d’informations d’identification .
DefaultAzureCredential
DefaultAzureCredentialsimplifie l’authentification lors du développement d’applications qui se déploient sur Azure en combinant les informations d’identification utilisées dans les environnements d’hébergement Azure avec celles utilisées dans le développement local. Pour plus d’informations, consultez la vue d’ensemble de DefaultAzureCredential.
Examples
Consultez les exemples de code.
Informations d’identification du jeton chaîné
ChainedTokenCredential permet aux utilisateurs de configurer un flux d’authentification personnalisé composé de plusieurs informations d’identification.
Un exemple ci-dessous illustre l’utilisation ChainedTokenCredential de laquelle tentera de s’authentifier à l’aide EnvironmentCredentialde , puis revenez à l’authentification à l’aide ManagedIdentityCredentialde .
// A configuration demonstrated below would authenticate using EnvironmentCredential if it is
// available, and if it is not available, would fall back to use AzureCliCredential, and then to
// ManagedIdentityCredential.
auto chainedTokenCredential = std::make_shared<Azure::Identity::ChainedTokenCredential>(
Azure::Identity::ChainedTokenCredential::Sources{
std::make_shared<Azure::Identity::EnvironmentCredential>(),
std::make_shared<Azure::Identity::AzureCliCredential>(),
std::make_shared<Azure::Identity::ManagedIdentityCredential>()});
Azure::Service::Client azureServiceClient("serviceUrl", chainedTokenCredential);
Prise en charge des identités managées
L’authentification d’identité managée est prise en charge via les ManagedIdentityCredential services Azure suivants :
Spécifier une identité managée affectée par l’utilisateur avec ManagedIdentityCredential
De nombreux hôtes Azure autorisent l’attribution d’une identité managée affectée par l’utilisateur. Les exemples suivants illustrent la configuration ManagedIdentityCredential pour authentifier une identité managée affectée par l’utilisateur lorsqu’elle est déployée sur un hôte Azure. L’exemple de code utilise les informations d’identification pour authentifier une BlobClient bibliothèque cliente Azure ::Storage ::Blobs . Il montre également comment spécifier une identité managée affectée par l’utilisateur par un ID client, un ID de ressource ou un ID d’objet.
ID de client
Pour utiliser un ID client, créez un ManagedIdentityId avec ManagedIdentityIdKind::ClientId, définissez-le comme dans IdentityId le ManagedIdentityCredentialOptions, puis passez-le au ManagedIdentityCredential constructeur. Par exemple:
// When deployed to an Azure host, ManagedIdentityCredential will authenticate the specified
// user-assigned managed identity.
std::string userAssignedClientId = "<your managed identity client ID>";
ManagedIdentityCredentialOptions options;
options.IdentityId = ManagedIdentityId::FromUserAssignedClientId(userAssignedClientId);
auto credential = std::make_shared<ManagedIdentityCredential>(options);
auto blobClient = BlobClient(blobUrl, credential);
ID de ressource
De même, pour utiliser un ID de ressource, créez un ManagedIdentityId avec ManagedIdentityIdKind::ResourceId, définissez-le comme IdentityId dans le ManagedIdentityCredentialOptions, puis transmettez-le au ManagedIdentityCredential constructeur. L’ID de ressource prend la forme /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Étant donné que les ID de ressource peuvent être générés par convention, ils peuvent être plus pratiques lorsqu’il existe un grand nombre d’identités managées affectées par l’utilisateur dans votre environnement. Par exemple:
std::string userAssignedResourceId = "/subscriptions/<your managed identity resource ID>";
ManagedIdentityCredentialOptions options;
options.IdentityId = ManagedIdentityId::FromUserAssignedResourceId(
Azure::Core::ResourceIdentifier(userAssignedResourceId));
auto credential = std::make_shared<ManagedIdentityCredential>(options);
auto blobClient = BlobClient(blobUrl, credential);
ID d’objet
De même, pour utiliser un ID d’objet, créez un ManagedIdentityId avec ManagedIdentityIdKind::ObjectId, définissez-le comme IdentityId dans le ManagedIdentityCredentialOptions, puis transmettez-le au ManagedIdentityCredential constructeur. Par exemple:
std::string userAssignedObjectId = "<your managed identity object ID>";
ManagedIdentityCredentialOptions options;
options.IdentityId = ManagedIdentityId::FromUserAssignedObjectId(userAssignedObjectId);
auto credential = std::make_shared<ManagedIdentityCredential>(options);
auto blobClient = BlobClient(blobUrl, credential);
Spécifier une identité managée affectée par le système avec ManagedIdentityCredential
Vous pouvez exprimer votre intention d’utiliser une identité managée affectée par le système, explicitement, en créant une ManagedIdentityId valeur avec ManagedIdentityIdKind::SystemAssigned et une valeur d’ID vide, définissez-la IdentityId comme dans le ManagedIdentityCredentialOptions, puis transmettez-la au ManagedIdentityCredential constructeur. Par exemple:
ManagedIdentityCredentialOptions options;
options.IdentityId = ManagedIdentityId::SystemAssigned();
auto credential = std::make_shared<ManagedIdentityCredential>(options);
auto blobClient = BlobClient(blobUrl, credential);
Une autre façon de spécifier une identité managée affectée par le système, implicitement, consiste à appeler le constructeur par défaut ManagedIdentityCredential . Par exemple:
auto credential = std::make_shared<ManagedIdentityCredential>();
auto blobClient = BlobClient(blobUrl, credential);
Variables d’environnement
DefaultAzureCredential et EnvironmentCredential peuvent être configurés avec des variables d’environnement. Chaque type d’authentification nécessite des valeurs pour des variables spécifiques :
Principal de service avec une clé secrète
| Nom de la variable | Valeur |
|---|---|
AZURE_TENANT_ID |
ID du locataire Microsoft Entra de l’application |
AZURE_CLIENT_ID |
ID d’une application Microsoft Entra |
AZURE_CLIENT_SECRET |
l’un des secrets clients de l’application |
AZURE_AUTHORITY_HOST |
(facultatif) URL de l’autorité d’authentification |
Principal de service avec un certificat
| nom de la variable | Valeur |
|---|---|
AZURE_CLIENT_ID |
ID d’une application Microsoft Entra |
AZURE_TENANT_ID |
ID du locataire Microsoft Entra de l’application |
AZURE_CLIENT_CERTIFICATE_PATH |
chemin d’accès à un fichier de certificat encodé PFX ou PEM, y compris une clé privée |
AZURE_AUTHORITY_HOST |
(facultatif) URL de l’autorité d’authentification |
La configuration est tentée dans l’ordre ci-dessus. Par exemple, si les valeurs d’une clé secrète client et d’un certificat sont présentes, la clé secrète client est utilisée.
Classes d’informations d’identification
Chaînes d'accréditation
| Credential | Usage |
|---|---|
DefaultAzureCredential |
Fournit une expérience d’authentification simplifiée pour commencer rapidement à développer des applications exécutées dans Azure. |
ChainedTokenCredential |
Permet aux utilisateurs de définir des flux d’authentification personnalisés qui composent plusieurs informations d’identification. |
Authentifier des applications hébergées par Azure
| Credential | Usage |
|---|---|
ManagedIdentityCredential |
Authentifie l’identité managée d’une ressource Azure. |
EnvironmentCredential |
Authentifie un principal de service ou un utilisateur via des informations d’identification spécifiées dans les variables d’environnement. |
WorkloadIdentityCredential |
Authentifier une identité de charge de travail sur Kubernetes. |
Authentifier les principaux de service
| Credential | Usage |
|---|---|
AzurePipelinesCredential |
Prend en charge ID de charge de travail Microsoft Entra sur Azure Pipelines. |
ClientAssertionCredential |
Authentifie un principal de service à l’aide d’une assertion de client signée. |
ClientSecretCredential |
Authentifie un principal de service à l’aide d’un secret. |
ClientCertificateCredential |
Authentifie un principal de service à l’aide d’un certificat. |
S’authentifier via des outils de développement
| Credential | Usage |
|---|---|
AzureCliCredential |
Authentifie dans un environnement de développement avec Azure CLI. |
Résolution des problèmes
- Les messages du journal du KIT de développement logiciel (SDK) Azure Identity contiennent des informations disgnostiques et commencent par «
Identity:». - Les informations d’identification déclenchent des exceptions lorsqu’elles ne parviennent pas à s’authentifier ou ne peuvent pas exécuter l’authentification. Lorsqu’une information d’identification ne parvient pas à s’authentifier, une
AuthenticationExceptioninformation est levée. L’exception a lawhat()fonction qui fournit plus d’informations sur l’échec.
Contribution
Pour plus d’informations sur la contribution à ce référentiel, consultez le guide de contribution.
Ce projet accueille les contributions et suggestions. La plupart des contributions vous obligent à accepter un contrat de licence contributeur (CLA) déclarant que vous avez le droit, et en fait, de nous accorder les droits d’utilisation de votre contribution. Pour plus d’informations, consultez le Contrat de licence contributeur.
Lorsque vous envoyez une demande de tirage( pull request), un bot CLA détermine automatiquement si vous devez fournir un CLA et décorer correctement la demande de tirage (par exemple, étiquette, commentaire). Suivez simplement les instructions fournies par le bot. Vous n’aurez besoin de le faire qu’une seule fois sur tous les dépôts à l’aide de notre CLA.
Ce projet a adopté le Code de conduite Open Source Microsoft.
Pour plus d’informations, consultez le forum aux questions du Code de conduite
Liens utiles supplémentaires pour les contributeurs
Beaucoup de gens du monde entier ont contribué à améliorer ce projet. Vous voudrez consulter :
- Quels sont les premiers problèmes pour les nouveaux contributeurs au dépôt ?
- Comment générer et tester votre modification
- Comment vous pouvez apporter un changement !
- Forum aux questions (FAQ) et rubriques conceptuelles dans le wiki détaillé du Kit de développement logiciel (SDK) Azure pour C++.
Signaler des problèmes de sécurité et des bogues de sécurité
Les problèmes de sécurité et les bogues doivent être signalés en privé, par e-mail, au Centre d'intervention en matière de sécurité Microsoft (MSRC). secure@microsoft.com Vous devez recevoir une réponse dans les 24 heures. Si pour une raison quelconque vous ne le faites pas, veuillez suivre par e-mail pour vous assurer que nous avons reçu votre message d’origine. Vous trouverez plus d’informations, notamment la clé PGP MSRC, dans Security TechCenter.
Licence
Le Kit de développement logiciel (SDK) Azure pour C++ est concédé sous licence MIT .