Authentification Azure avec un principal de service

Cet article explique comment la bibliothèque Azure Identity prend en charge l’authentification par jeton Microsoft Entra via le principal de service. Cet article aborde les sujets suivants :

Pour plus d’informations, consultez Objets d’application et du principal de service dans Microsoft Entra ID. Pour résoudre les problèmes d’authentification du principal de service, consultez Résoudre les problèmes d’authentification du principal de service.

Créer un principal de service avec l’interface Azure CLI

Utilisez les exemples Azure CLI suivants pour créer ou obtenir des informations d’identification de clé secrète client.

Utilisez la commande suivante pour créer un principal de service et configurer son accès aux ressources Azure :

az ad sp create-for-rbac \
    --name <your application name> \
    --role Contributor \
    --scopes /subscriptions/mySubscriptionID

Cette commande retourne une valeur semblable à la sortie suivante :

{
"appId": "generated-app-ID",
"displayName": "dummy-app-name",
"name": "http://dummy-app-name",
"password": "random-password",
"tenant": "tenant-ID"
}

Utilisez la commande suivante pour créer un principal de service ainsi qu’un certificat. Notez le chemin d’accès/l’emplacement de ce certificat.

az ad sp create-for-rbac \
    --name <your application name> \
    --role Contributor \
    --cert <certificate name> \
    --create-cert

Consultez les informations d’identification retournées et notez les informations suivantes :

  • AZURE\_CLIENT\_ID pour l’appId.
  • AZURE\_CLIENT\_SECRET pour le mot de passe.
  • AZURE\_TENANT\_ID pour le locataire.

Informations d’identification de clé secrète client

Ces informations d’identification authentifient le principal de service créé par le biais de sa clé secrète client (mot de passe). Cet exemple illustre l’authentification du SecretClient à partir de la bibliothèque de client azure-security-keyvault-secrets à l’aide de ClientSecretCredential.

/**
 *  Authenticate with client secret.
 */
ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder()
  .clientId("<your client ID>")
  .clientSecret("<your client secret>")
  .tenantId("<your tenant ID>")
  .build();

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(clientSecretCredential)
  .buildClient();

Informations d’identification de certificat client

Ces informations d’identification authentifient le principal de service créé par le biais de son certificat client. Cet exemple illustre l’authentification du SecretClient à partir de la bibliothèque de client azure-security-keyvault-secrets à l’aide de ClientCertificateCredential.

/**
 *  Authenticate with a client certificate.
 */
ClientCertificateCredential clientCertificateCredential = new ClientCertificateCredentialBuilder()
  .clientId("<your client ID>")
  .pemCertificate("<path to PEM certificate>")
  // Choose between either a PEM certificate or a PFX certificate.
  //.pfxCertificate("<path to PFX certificate>", "PFX CERTIFICATE PASSWORD")
  .tenantId("<your tenant ID>")
  .build();

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(clientCertificateCredential)
  .buildClient();

Étapes suivantes

Cet article a abordé l’authentification via un principal de service. Cette forme d’authentification est l’une des nombreuses méthodes permettant de s’authentifier dans le Kit de développement logiciel (SDK) Azure pour Java. Les articles suivants décrivent d’autres méthodes :

Si vous rencontrez des problèmes liés à l’authentification du principal de service, consultez Résoudre les problèmes d’authentification du principal de service.

Une fois l’authentification maître effectuée, consultez Configurer la journalisation dans le Kit de développement logiciel (SDK) Azure pour Java pour en savoir plus sur la fonctionnalité de journalisation fournie par le SDK.