Autenticación de Azure con Java y Azure Identity
En este artículo se proporciona información general sobre la biblioteca de identidades de Azure para Java, que proporciona compatibilidad con la autenticación de tokens de Microsoft Entra en Azure SDK para Java. Esta biblioteca proporciona un conjunto de implementaciones de TokenCredential
que se pueden usar para construir clientes de Azure SDK que admitan la autenticación de tokens de Microsoft Entra.
La biblioteca Azure Identity admite actualmente:
- Autenticación de Azure en entornos de desarrollo de Java, lo que permite:
- Autenticación de IDEA IntelliJ, la información de inicio de sesión se recupera de Azure Toolkit for IntelliJ.
- Autenticación de la CLI de Azure, la información de inicio de sesión se guarda en la CLI de Azure.
- Autenticación de la CLI para desarrolladores de Azure, con la información de inicio de sesión guardada en la CLI para desarrolladores de Azure
- Autenticación de Azure PowerShell, con la información de inicio de sesión guardada en Azure PowerShell
- Autenticación de aplicaciones hospedadas en Azure, lo que permite:
- autenticación
DefaultAzureCredential
- Autenticación de identidad administrada
- autenticación
- Autenticación de Azure con entidades de servicio, lo que permite:
- Autenticación de secretos de cliente
- Autenticación de certificados de cliente
- Autenticación con credenciales de usuario, lo que permite:
- Autenticación interactiva del explorador
- Autenticación con código de dispositivo
- Autenticación con nombre de usuario y contraseña
Siga estos vínculos anteriores para más información sobre los detalles de cada uno de estos enfoques de autenticación. En el resto de este artículo, presentaremos la clase DefaultAzureCredential
que se usa habitualmente y los temas relacionados.
Adición de las dependencias de Maven
Para agregar la dependencia de Maven, incluya el siguiente código XML en el archivo pom.xml del proyecto. Reemplace {version_number}
por el número de versión estable más reciente de la versión, como se muestra en la página de biblioteca de identidades de Azure.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>{version_number}</version>
</dependency>
Conceptos clave
Hay dos conceptos clave para comprender la biblioteca Azure Identity: el concepto de credencial y la implementación más común de esa credencial, DefaultAzureCredential
.
Una credencial es una clase que contiene o puede obtener los datos necesarios para que un cliente del servicio autentique las solicitudes. Los clientes del servicio en Azure SDK aceptan las credenciales cuando se construyen y usan esas credenciales para autenticar las solicitudes que se realizan al servicio.
La biblioteca de identidades de Azure se centra en la autenticación de OAuth con Microsoft Entra ID y ofrece varias clases de credenciales que pueden adquirir un token de Microsoft Entra para autenticar solicitudes de servicio. Todas las clases de credenciales de esta biblioteca son implementaciones de la clase abstracta TokenCredential
de azure-core y puede usar cualquiera de ellas para construir clientes del servicio que se puedan autenticar con un elemento TokenCredential
.
DefaultAzureCredential
es adecuado para la mayoría de los escenarios en los que la aplicación está diseñada para ejecutarse en la nube de Azure. DefaultAzureCredential
combina las credenciales que se usan normalmente para autenticarse cuando se implementa con las credenciales que se usan para autenticarse en un entorno de desarrollo. Para obtener más información, incluidos los ejemplos que usan DefaultAzureCredential
, consulte la sección DefaultAzureCredential de Autenticación de aplicaciones Java hospedadas en Azure.
Ejemplos
Como se indica en Uso de Azure SDK para Java, las bibliotecas de administración difieren ligeramente. Una de las formas en las que difieren es que hay bibliotecas para consumir los servicios de Azure, llamadas bibliotecas cliente, y bibliotecas para administrar los servicios de Azure, llamadas bibliotecas de administración. En las secciones siguientes, hay una rápida información general a la autenticación en las bibliotecas cliente y de administración.
Autenticación de las bibliotecas cliente de Azure
En el siguiente ejemplo se muestra la autenticación de SecretClient
de la biblioteca cliente azure-security-keyvault-secrets con 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();
Autenticación de las bibliotecas de administración de Azure
Las bibliotecas de administración de Azure usan las mismas API de credenciales que las bibliotecas cliente de Azure, pero también requieren un identificador de suscripción de Azure para administrar los recursos de Azure de esa suscripción.
Puede encontrar el identificador de suscripción en la página Suscripciones de Azure Portal. Como alternativa, use el siguiente comando de la CLI de Azure para obtener los identificadores de suscripción:
az account list --output table
Puede establecer el identificador de suscripción en la variable de entorno AZURE_SUBSCRIPTION_ID
. AzureProfile
selecciona este identificador como el identificador de suscripción predeterminado durante la creación de una instancia de Manager
, como se muestra en el ejemplo siguiente:
AzureResourceManager azureResourceManager = AzureResourceManager.authenticate(
new DefaultAzureCredentialBuilder().build(),
new AzureProfile(AzureEnvironment.AZURE))
.withDefaultSubscription();
DefaultAzureCredential
que se usa en este ejemplo autentica una instancia de AzureResourceManager
mediante DefaultAzureCredential
. También puede usar otras implementaciones de credenciales de tokens que se ofrecen en la biblioteca Azure Identity en lugar de DefaultAzureCredential
.
Solución de problemas
Para obtener instrucciones, consulte Solución de problemas de autenticación de Azure Identity.
Pasos siguientes
En este artículo se ha presentado la funcionalidad de Azure Identity disponible en Azure SDK para Java. Describe DefaultAzureCredential
como común y adecuado en muchos casos. En los artículos siguientes se describen otras maneras de autenticarse mediante la biblioteca Azure Identity y se proporciona más información sobre DefaultAzureCredential
: