Azure-Authentifizierung mit Dienstprinzipal

In diesem Artikel wird erläutert, wie die Azure-Identity-Bibliothek Microsoft Entra-Tokenauthentifizierung über einen Dienstprinzipal unterstützt. In diesem Artikel werden die folgenden Themen behandelt:

Weitere Informationen finden Sie unter Anwendungs- und Dienstprinzipalobjekte in Microsoft Entra ID. Informationen zur Problembehandlung bei Dienstprinzipalauthentifizierungsproblemen finden Sie unter Problembehandlung bei der Dienstprinzipalauthentifizierung.

Erstellen eines Dienstprinzipals über die Azure CLI

Verwenden Sie die folgenden Azure CLI-Beispiele, um Anmeldeinformationen mit geheimen Clientschlüssel zu erstellen oder abzurufen.

Verwenden Sie den folgenden Befehl, um einen Dienstprinzipal zu erstellen und seinen Zugriff auf Azure-Ressourcen zu konfigurieren:

az ad sp create-for-rbac \
    --name <your application name> \
    --role Contributor \
    --scopes /subscriptions/mySubscriptionID

Dieser Befehl gibt einen Wert zurück, der der folgenden Ausgabe ähnelt:

{
"appId": "generated-app-ID",
"displayName": "dummy-app-name",
"name": "http://dummy-app-name",
"password": "random-password",
"tenant": "tenant-ID"
}

Verwenden Sie den folgenden Befehl, um einen Dienstprinzipal zusammen mit einem Zertifikat zu erstellen. Notieren Sie sich den Pfad/Speicherort dieses Zertifikats.

az ad sp create-for-rbac \
    --name <your application name> \
    --role Contributor \
    --cert <certificate name> \
    --create-cert

Überprüfen Sie die zurückgegebenen Anmeldeinformationen, und notieren Sie sich die folgenden Informationen:

  • AZURE\_CLIENT\_ID als appId.
  • AZURE\_CLIENT\_SECRET als Kennwort.
  • AZURE\_TENANT\_ID als Mandant.

Anmeldeinformationen mit Clientgeheimnis

Diese Anmeldeinformationen authentifizieren den erstellten Dienstprinzipal über sein Clientgeheimnis (Kennwort). Dieses Beispiel zeigt, wie SecretClient von der azure-security-keyvault-secrets-Clientbibliothek mithilfe von ClientSecretCredential authentifiziert wird.

/**
 *  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();

Anmeldeinformationen mit Clientzertifikat

Diese Anmeldeinformationen authentifizieren den erstellten Dienstprinzipal über sein Clientzertifikat. Dieses Beispiel zeigt, wie SecretClient von der azure-security-keyvault-secrets-Clientbibliothek mithilfe von ClientCertificateCredential authentifiziert wird.

/**
 *  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();

Nächste Schritte

In diesem Artikel wurde Authentifizierung über einen Dienstprinzipal behandelt. Diese Form von Authentifizierung ist eine von mehreren Methoden, die Sie im Azure SDK für Java für die Authentifizierung verwenden können. In den folgenden Artikeln werden weitere Möglichkeiten beschrieben:

Wenn Probleme im Zusammenhang mit der Dienstprinzipalauthentifizierung auftreten, lesen Sie die Problembehandlung bei der Dienstprinzipalauthentifizierung.

Wenn Sie die Authentifizierung gemeistert haben, finden Sie unter Konfigurieren der Protokollierung im Azure SDK für Java weitere Informationen zur Protokollierungsfunktionalität, die vom SDK bereitgestellt wird.