Autenticación de Azure con entidades de servicio

En este artículo se examina cómo la biblioteca de identidades de Azure admite la autenticación de tokens de Microsoft Entra a través de la entidad de servicio. En este artículo se tratan los siguientes asuntos:

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 o obtener credenciales secretas 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:

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.