Autenticación de Azure con entidades de servicio
En este artículo se describe cómo la biblioteca Azure Identity admite la autenticación de tokens de Microsoft Entra mediante entidades de servicio. En este artículo se tratan los siguientes asuntos:
- Creación de una entidad de servicio con la CLI de Azure
- Credencial de secreto de cliente
- Credencial de certificado de cliente
Para más información, consulte Objetos de aplicación y de entidad de servicio en Microsoft Entra ID. Para solucionar problemas de autenticación de entidad de servicio, consulte Solución de problemas de autenticación de entidad de servicio.
Creación de una entidad de servicio con la CLI de Azure
Use los siguientes ejemplos de la CLI de Azure para crear u obtener credenciales de secreto de cliente.
Use el siguiente comando para crear una entidad de servicio y configurar su acceso a los recursos de Azure:
az ad sp create-for-rbac \
--name <your application name> \
--role Contributor \
--scopes /subscriptions/mySubscriptionID
Este comando devuelve un valor similar a la siguiente salida:
{
"appId": "generated-app-ID",
"displayName": "dummy-app-name",
"name": "http://dummy-app-name",
"password": "random-password",
"tenant": "tenant-ID"
}
Use el siguiente comando para crear una entidad de servicio junto con un certificado. Tome nota de la ruta de acceso o la ubicación de este certificado.
az ad sp create-for-rbac \
--name <your application name> \
--role Contributor \
--cert <certificate name> \
--create-cert
Compruebe las credenciales devueltas y tome nota de la información siguiente:
AZURE\_CLIENT\_ID
para el identificador de la aplicación.AZURE\_CLIENT\_SECRET
para la contraseña.AZURE\_TENANT\_ID
para el inquilino.
Credencial de secreto de cliente
Esta credencial autentica la entidad de servicio creada por medio de su secreto de cliente (contraseña). En el siguiente ejemplo se muestra la autenticación del elemento SecretClient
de la biblioteca cliente azure-security-keyvault-secrets con la clase 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();
Credencial de certificado de cliente
Esta credencial autentica la entidad de servicio creada por medio de su certificado de cliente. En el siguiente ejemplo se muestra la autenticación del elemento SecretClient
de la biblioteca cliente azure-security-keyvault-secrets con la clase 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();
Pasos siguientes
En este artículo se ha tratado la autenticación con entidades de servicio. Esta forma de autenticación es una de las varias maneras con las que puede autenticarse en Azure SDK para Java. En los siguientes artículos se describen otras maneras:
- Autenticación de Azure en entornos de desarrollo de Java
- Autenticación de aplicaciones de Java hospedadas en Azure
- Autenticación de Azure con credenciales de usuario
Si tiene problemas relacionados con la autenticación de la entidad de servicio, consulte Solución de problemas de autenticación de entidad de servicio.
Después de conocer la autenticación, consulte Configuración del registro en Azure SDK para Java para obtener información sobre la funcionalidad de registro que proporciona el SDK.