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. Cette prise en charge est rendue possible par le biais d’un ensemble d’implémentations TokenCredential
, qui sont abordé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 par Azure, consultez Résoudre les problèmes d’authentification des applications hébergées par Azure.
Informations d’identification Azure par défaut
DefaultAzureCredential
convient à la plupart des scénarios où l’application s’exécute finalement 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 :
- Environnement :
DefaultAzureCredential
lit les informations de compte spécifiées via des variables d’environnement et l’utilise pour s’authentifier. - Identité managée : si l’application se déploie sur un hôte Azure avec l’identité managée activée,
DefaultAzureCredential
s’authentifie auprès de ce compte. - IntelliJ : si vous avez authentifié via Azure Shared Computer Toolkit pour IntelliJ,
DefaultAzureCredential
s’authentifie auprès de ce compte. - Visual Studio Code : si vous avez authentifié via le plug-in compte Azure Visual Studio Code,
DefaultAzureCredential
s’authentifie auprès de ce compte. - Azure CLI : si vous avez authentifié un compte via la commande Azure CLI
az login
,DefaultAzureCredential
s’authentifie auprès de 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.
- La définition des variables
AZURE_CLIENT_ID
d’environnement,AZURE_CLIENT_SECRET
etAZURE_TENANT_ID
telle que définie dans les variables d’environnement configure pourDefaultAzureCredential
s’authentifier en tant que principal de 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 définie par l’utilisateur, tout en laissant vide la configuration 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 configure pour s’authentifier auprès d’un locataire spécifique pour le cache de jetonsDefaultAzureCredential
partagé, Visual Studio Code et IntelliJ IDEA. - La définition de la variable
AZURE_USERNAME
d’environnement configure pourDefaultAzureCredential
choisir le jeton mis en cache correspondant à partir du cache de jetons partagé. - Le paramètre
.intelliJKeePassDatabasePath(String)
sur le générateur configureDefaultAzureCredential
pour lire un fichier KeePass spécifique lors de l’authentification avec les informations d’identification IntelliJ.
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://<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 illustre l’authentification SecretClient
à partir de la bibliothèque cliente azure-security-keyvault-secrets à l’aide DefaultAzureCredential
du déploiement sur une ressource Azure avec une identité managée affectée par 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 illustre l’authentification SecretClient
à partir de la bibliothèque cliente azure-security-keyvault-secrets à l’aide DefaultAzureCredential
d’une station de travail où IntelliJ IDEA est installé et que l’utilisateur s’est connecté avec un compte Azure au Shared Computer Toolkit Azure pour 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. 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 sont authentifiées et offrent une expérience d’authentification sans secret.
Pour en savoir plus, consultez en quoi consistent 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. |
AZURE_TENANT_ID |
ID du locataire Microsoft Entra 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. |
AZURE_TENANT_ID |
ID du locataire Microsoft Entra 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. |
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 d’application hébergée par Azure, consultez Résoudre les problèmes liés à l’authentification d’application hébergée 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.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour