Udostępnij za pomocą


Uwierzytelnianie platformy Azure przy użyciu głównej jednostki usługi

W tym artykule opisano, jak biblioteka tożsamości platformy Azure obsługuje uwierzytelnianie tokenu entra firmy Microsoft za pośrednictwem jednostki usługi. W tym artykule omówiono następujące tematy:

Aby uzyskać więcej informacji, zobacz Application and service principal objects in Microsoft Entra ID (Obiekty aplikacji i jednostki usługi w usłudze Microsoft Entra ID). Aby rozwiązać problemy z uwierzytelnianiem jednostki usługi, zobacz Rozwiązywanie problemów z uwierzytelnianiem jednostki usługi.

Tworzenie obiektu usługi przy użyciu interfejsu wiersza polecenia platformy Azure

Użyj poniższych przykładów Azure CLI, aby utworzyć lub pobrać poświadczenia tajne klienta.

Użyj następującego polecenia, aby utworzyć jednostkę usługi i skonfigurować jej dostęp do zasobów platformy Azure:

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

To polecenie zwraca wartość podobną do następujących danych wyjściowych:

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

Użyj następującego polecenia, aby utworzyć zasadę usługi wraz z certyfikatem. Zanotuj ścieżkę/lokalizację tego certyfikatu.

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

Sprawdź zwrócone poświadczenia i zanotuj następujące informacje:

  • AZURE\_CLIENT\_ID dla identyfikatora appId.
  • dla hasła.
  • AZURE\_TENANT\_ID dla dzierżawcy.

Poświadczenie tajnego klucza klienta

To poświadczenie uwierzytelnia utworzonego principala usługi za pomocą sekretu klienta (hasła). W tym przykładzie pokazano uwierzytelnianie SecretClient z biblioteki klienta azure-security-keyvault-secrets przy użyciu polecenia 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();

Uwierzytelnienie certyfikatu klienta

To poświadczenie uwierzytelnia utworzoną jednostkę usługi za pomocą certyfikatu klienta. W tym przykładzie pokazano uwierzytelnianie SecretClient z biblioteki klienta azure-security-keyvault-secrets przy użyciu polecenia ClientSecretCredential.

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

Następne kroki

W tym artykule opisano uwierzytelnianie za pośrednictwem jednostki usługi. Ta forma uwierzytelniania jest jednym z wielu sposobów uwierzytelniania w zestawie Azure SDK dla języka Java. W poniższych artykułach opisano inne sposoby:

  • Uwierzytelnianie platformy Azure w środowiskach deweloperskich
  • Uwierzytelnianie aplikacji hostowanych na platformie Microsoft Azure
  • Uwierzytelnianie przy użyciu poświadczeń użytkownika

Jeśli wystąpią problemy związane z uwierzytelnieniem jednostki usługi, zobacz Rozwiązywanie problemów z uwierzytelnieniem jednostki usługi.

Po opanowaniu uwierzytelniania zobacz Konfigurowanie rejestrowania w Azure SDK dla języka Java, aby uzyskać informacje na temat funkcjonalności rejestrowania udostępnianych przez SDK.