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.
DefaultAzureCredential
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. Pour plus d’informations, consultez la vue d’ensemble de DefaultAzureCredential.
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
etAZURE_TENANT_ID
comme indiqué dans Variables d'environnement, vous configurezDefaultAzureCredential
pour qu'il s'authentifie en tant que principal du service spécifié par les valeurs. - La définition
.managedIdentityClientId(String)
sur le générateur ou la variableAZURE_CLIENT_ID
d’environnement configureDefaultAzureCredential
pour s’authentifier en tant qu’identité managée affectée par l’utilisateur, tout en laissant les configurer vides pour s’authentifier en tant qu’identité managée affectée par le système. - Le paramètre
.tenantId(String)
sur le générateur ou la variableAZURE_TENANT_ID
d’environnement configureDefaultAzureCredential
pour s’authentifier auprès d’un locataire spécifique pour le cache de jetons partagé ou IntelliJ IDEA. - En définissant la variable d'environnement
AZURE_USERNAME
, vous configurezDefaultAzureCredential
pour qu'il choisisse le jeton correspondant dans le cache de jetons partagé.
S’authentifier avec DefaultAzureCredential
L’exemple suivant illustre l’authentification SecretClient
à partir de la bibliothèque cliente azure-security-keyvault-secrets à l’aide DefaultAzureCredential
de :
// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
.vaultUrl("https://<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.
/**
* DefaultAzureCredential uses the user-assigned managed identity with the specified client ID.
*/
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
.managedIdentityClientId("<CLIENT_ID>")
.build();
// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
.vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net")
.credential(credential)
.buildClient();
ManagedIdentityCredential
ManagedIdentityCredential authentifie l’identité managée (affectée par le système ou affectée par l’utilisateur) d’une ressource Azure. Par conséquent, si l’application s’exécute à l’intérieur d’une ressource Azure qui prend en charge l’identité managée via IDENTITY/MSI
, IMDS
les points de terminaison ou les deux, ces informations d’identification obtiennent l’authentification de votre application et offrent une 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 SecretClient
à partir de la bibliothèque cliente azure-security-keyvault-secrets à l’aide ManagedIdentityCredential
d’une machine virtuelle, d’App Service, d’application Functions, de Cloud Shell, de Service Fabric, d’Arc ou d’UN environnement AKS sur Azure, avec une identité managée affectée par le système ou affectée par l’utilisateur activée.
/**
* Authenticate with a user-assigned managed identity.
*/
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()
.clientId("<CLIENT_ID>") // required only for user-assigned
.build();
// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
.vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net")
.credential(credential)
.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). |
AZURE_CLIENT_CERTIFICATE_PASSWORD |
(facultatif) Mot de passe du fichier de certificat, le cas échéant. |
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN |
(facultatif) Envoyez la chaîne de certificats dans l’en-tête x5c pour prendre en charge l’authentification basée sur le sujet/l’émetteur. |
Nom d’utilisateur et mot de passe
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_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 :
- Authentification Azure dans les environnements de développement
- Authentification avec des principaux de service
- Authentification avec des informations d’identification d’utilisateur
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.