Partager via


Authentifier les applications Java hébergées dans Azure

Cet article explique comment la bibliothèque Azure Identity prend en charge l'authentification par jeton Microsoft Entra pour les applications hébergées sur Azure. Ce soutien est rendu possible par un ensemble d'implémentations TokenCredential, qui sont discutées dans cet article.

Cet article aborde les sujets suivants :

Pour résoudre les problèmes d'authentification liés aux applications hébergées dans Azure, consultez la section Dépannage de l'authentification des applications hébergées dans Azure.

Informations d’identification Azure par défaut

DefaultAzureCredential est approprié pour la plupart des scénarios dans lesquels l'application s'exécute en fin de compte dans le cloud Azure. DefaultAzureCredential combine les informations d’identification couramment utilisées pour l’authentification après déploiement avec les informations d’identification utilisées pour l’authentification dans un environnement de développement. DefaultAzureCredential tente de s'authentifier via les mécanismes suivants dans l'ordre :

Flux d’authentification DefaultAzureCredential

  • Environnement - DefaultAzureCredential lit les informations de compte spécifiées via les variables d'environnement et les utilise pour s'authentifier.
  • Identité gérée - Si l'application est déployée sur un hôte Azure avec l'option Identité gérée activée, DefaultAzureCredential s'authentifie avec ce compte.
  • IntelliJ - Si vous vous êtes authentifié via Azure Toolkit for IntelliJ, DefaultAzureCredential s'authentifie avec ce compte.
  • Visual Studio Code - Si vous vous êtes authentifié via le plug-in Visual Studio Code Azure Account, DefaultAzureCredential s'authentifie avec ce compte.
  • Azure CLI - Si vous avez authentifié un compte via la commande az login de Azure CLI, DefaultAzureCredential s'authentifie avec ce compte.

Configurer DefaultAzureCredential

DefaultAzureCredential prend en charge un ensemble de configurations par le biais de méthodes setter sur le DefaultAzureCredentialBuilder ou les variables d’environnement.

  • En définissant les variables d'environnement AZURE_CLIENT_ID, AZURE_CLIENT_SECRET et AZURE_TENANT_ID comme indiqué dans Variables d'environnement, vous configurez DefaultAzureCredential pour qu'il s'authentifie en tant que principal du service spécifié par les valeurs.
  • En définissant .managedIdentityClientId(String) dans le constructeur ou la variable d'environnement AZURE_CLIENT_ID, vous configurez DefaultAzureCredential pour qu'il s'authentifie en tant qu'identité gérée définie par l'utilisateur, tandis qu'en les laissant vides, vous le configurez pour qu'il s'authentifie en tant qu'identité gérée attribuée par le système.
  • Le paramètre .tenantId(String) sur le constructeur ou la variable d'environnement AZURE_TENANT_ID configure DefaultAzureCredential pour s'authentifier auprès d'un locataire spécifique pour le cache de jetons partagé, Visual Studio Code et IntelliJ IDEA.
  • En définissant la variable d'environnement AZURE_USERNAME, vous configurez DefaultAzureCredential pour qu'il choisisse le jeton correspondant dans le cache de jetons partagé.
  • Le paramètre .intelliJKeePassDatabasePath(String) du constructeur configure DefaultAzureCredential pour lire un fichier KeePass spécifique lors de l'authentification avec les informations d'identification d'IntelliJ.

S’authentifier avec DefaultAzureCredential

L’exemple suivant illustre l’authentification du SecretClient à partir de la bibliothèque de client azure-security-keyvault-secrets à l’aide des informations d’identification DefaultAzureCredential.

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

Authentifier une identité managée affectée par l’utilisateur avec DefaultAzureCredential

L'exemple suivant démontre l'authentification du SecretClient de la bibliothèque client azure-security-keyvault-secrets à l'aide du DefaultAzureCredential déployé sur une ressource Azure avec une identité gérée attribuée à l'utilisateur configurée.

/**
 * The default credential uses the user-assigned managed identity with the specified client ID.
 */
DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
  .managedIdentityClientId("<managed identity client 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(defaultCredential)
  .buildClient();

Authentifier un utilisateur dans Azure Toolkit for IntelliJ avec DefaultAzureCredential

L'exemple suivant démontre l'authentification du SecretClient de la bibliothèque client azure-security-keyvault-secrets à l'aide de DefaultAzureCredential, sur une station de travail où IntelliJ IDEA est installé et où l'utilisateur s'est connecté avec un compte Azure à l'Azure Toolkit for IntelliJ.

Pour plus d’informations sur la configuration de votre IDEA IntelliJ, consultez Se connecter à Azure Toolkit for IntelliJ pour IntelliJCredential.

/**
 * The default credential uses the KeePass database path to find the user account in IntelliJ on Windows.
 */
// KeePass configuration is required only for Windows. No configuration needed for Linux / Mac.
DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
  .intelliJKeePassDatabasePath("C:\\Users\\user\\AppData\\Roaming\\JetBrains\\IdeaIC2020.1\\c.kdbx")
  .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(defaultCredential)
  .buildClient();

Informations d’identification de l’identité managée

L’identité managée authentifie l’identité managée (affectée par le système ou l’utilisateur) d’une ressource Azure. Ainsi, si l'application s'exécute dans une ressource Azure qui prend en charge Managed Identity via des points de terminaison IDENTITY/MSI, IMDS ou les deux, ce justificatif permet d'authentifier votre application et offre une excellente expérience d'authentification sans secret.

Pour plus d’informations, consultez Que sont les identités managées pour les ressources Azure ?.

Authentifier dans Azure avec l’identité managée

L’exemple suivant illustre l’authentification du SecretClient à partir de la bibliothèque de client azure-security-keyvault-secrets à l’aide des informations d’identification ManagedIdentityCredential dans un environnement de machine virtuelle, de service d’application, d’application de fonction, Cloud Shell, Service Fabric, arc ou AKS sur Azure, avec l’identité managée affectée par le système ou par l’utilisateur activée.

/**
 * Authenticate with a managed identity.
 */
ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredentialBuilder()
  .clientId("<user-assigned managed identity client ID>") // required only for user-assigned
  .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(managedIdentityCredential)
  .buildClient();

Variables d'environnement

Vous pouvez configurer DefaultAzureCredential et EnvironmentCredential 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_CLIENT_ID ID d'une application Microsoft Entra ID.
AZURE_TENANT_ID ID du locataire Microsoft Entra ID de l'application.
AZURE_CLIENT_SECRET Une des clés secrètes client de l’application.

Principal de service avec un certificat

Nom de la variable Valeur
AZURE_CLIENT_ID ID d'une application Microsoft Entra ID.
AZURE_TENANT_ID ID du locataire Microsoft Entra ID de l'application.
AZURE_CLIENT_CERTIFICATE_PATH Chemin d’accès à un fichier de certificat encodé en PEM contenant la clé privée (sans protection par mot de passe).

Nom d’utilisateur et mot de passe

Nom de la variable Valeur
AZURE_CLIENT_ID ID d'une application Microsoft Entra ID.
AZURE_USERNAME Nom d’utilisateur (généralement une adresse e-mail).
AZURE_PASSWORD Mot de passe associé au nom d’utilisateur donné.

La configuration est tentée dans cet ordre. Par exemple, si les valeurs d’un certificat et d’une clé secrète client sont toutes les deux présentes, la clé secrète client est utilisée.

Étapes suivantes

Cet article a abordé l’authentification pour les applications hébergées dans Azure. 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 des applications hébergées par Azure, consultez la section Dépannage de l'authentification des applications hébergées par Azure.

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.