Udostępnij za pośrednictwem


Uwierzytelnianie aplikacji Java hostowanych na platformie Azure

W tym artykule opisano, w jaki sposób biblioteka tożsamości platformy Azure obsługuje uwierzytelnianie tokenu entra firmy Microsoft dla aplikacji hostowanych na platformie Azure. Ta obsługa jest możliwa za pośrednictwem zestawu implementacji TokenCredential , które zostały omówione w tym artykule.

W tym artykule omówiono następujące tematy:

Aby rozwiązać problemy z uwierzytelnianiem związane z aplikacjami hostowanymi na platformie Azure, zobacz Rozwiązywanie problemów z uwierzytelnianiem aplikacji hostowanych na platformie Azure.

Wartość domyślnaAzureCredential

DefaultAzureCredential Łączy poświadczenia, które są często używane do uwierzytelniania podczas wdrażania, z poświadczeniami używanymi do uwierzytelniania w środowisku projektowym. Aby uzyskać więcej informacji, zobacz Omówienie domyślneAzureCredential.

Konfigurowanie wartości domyślnejAzureCredential

DefaultAzureCredential program obsługuje zestaw konfiguracji za pośrednictwem metod ustawiających w DefaultAzureCredentialBuilder zmiennych środowiskowych lub .

  • Ustawienie zmiennych AZURE_CLIENT_IDśrodowiskowych , AZURE_CLIENT_SECRETi AZURE_TENANT_ID zgodnie z definicją w zmienne środowiskowe konfiguruje DefaultAzureCredential się do uwierzytelniania jako jednostka usługi określona przez wartości.
  • Ustawienie .managedIdentityClientId(String) w konstruktorze lub zmiennej AZURE_CLIENT_ID środowiskowej konfiguruje DefaultAzureCredential się do uwierzytelniania jako tożsamości zarządzanej przypisanej przez użytkownika, pozostawiając je puste konfiguruje do uwierzytelniania jako tożsamość zarządzaną przypisaną przez system.
  • Ustawienie .tenantId(String) w konstruktorze lub zmiennej AZURE_TENANT_ID środowiskowej powoduje skonfigurowanie DefaultAzureCredential uwierzytelniania w określonej dzierżawie dla udostępnionej pamięci podręcznej tokenu lub środowiska IntelliJ IDEA.
  • Ustawienie zmiennej AZURE_USERNAME środowiskowej umożliwia DefaultAzureCredential wybranie odpowiedniego buforowanego tokenu z udostępnionej pamięci podręcznej tokenu.

Uwierzytelnianie przy użyciu wartości domyślnejAzureCredential

W poniższym przykładzie pokazano uwierzytelnianie SecretClient z biblioteki klienta azure-security-keyvault-secrets przy użyciu polecenia DefaultAzureCredential:

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net")
  .credential(new DefaultAzureCredentialBuilder().build())
  .buildClient();

Uwierzytelnianie tożsamości zarządzanej przypisanej przez użytkownika przy użyciu ustawienia DomyślneAzureCredential

W poniższym przykładzie pokazano uwierzytelnianie SecretClient z biblioteki klienta azure-security-keyvault-secrets przy użyciu DefaultAzureCredential wdrożonej w zasobie platformy Azure z skonfigurowaną tożsamością zarządzaną przypisaną przez użytkownika.

/**
 * DefaultAzureCredential uses the user-assigned managed identity with the specified client ID.
 */
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
  .managedIdentityClientId("<CLIENT_ID>")
  .build();

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net")
  .credential(credential)
  .buildClient();

ManagedIdentityCredential

ManagedIdentityCredential uwierzytelnia tożsamość zarządzaną (przypisaną przez system lub przypisaną przez użytkownika) zasobu platformy Azure. Dlatego jeśli aplikacja jest uruchomiona wewnątrz zasobu platformy Azure, który obsługuje tożsamość zarządzaną za pośrednictwem IDENTITY/MSI, IMDS punktów końcowych lub obu tych elementów, to to poświadczenie pobiera uwierzytelnienie aplikacji i oferuje środowisko uwierzytelniania bez wpisów tajnych.

Aby uzyskać więcej informacji, zobacz Czym są tożsamości zarządzane dla zasobów platformy Azure?.

Uwierzytelnianie na platformie Azure przy użyciu tożsamości zarządzanej

W poniższym przykładzie pokazano uwierzytelnianie SecretClient z biblioteki klienta azure-security-keyvault-secrets przy użyciu ManagedIdentityCredential biblioteki klienta w usłudze Virtual Machine, App Service, Functions, Cloud Shell, Service Fabric, Arc lub AKS na platformie Azure z włączoną tożsamością zarządzaną przypisaną przez system lub użytkownika.

/**
 * Authenticate with a user-assigned managed identity.
 */
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()
  .clientId("<CLIENT_ID>") // required only for user-assigned
  .build();

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<KEY_VAULT_NAME>.vault.azure.net")
  .credential(credential)
  .buildClient();

Zmienne środowiskowe

Można skonfigurować DefaultAzureCredential zmienne środowiskowe i EnvironmentCredential za pomocą tych zmiennych. Każdy typ uwierzytelniania wymaga wartości dla określonych zmiennych:

Jednostka usługi z wpisem tajnym

Nazwa zmiennej Wartość
AZURE_CLIENT_ID Identyfikator aplikacji Firmy Microsoft Entra.
AZURE_TENANT_ID Identyfikator dzierżawy microsoft Entra aplikacji.
AZURE_CLIENT_SECRET Jeden z wpisów tajnych klienta aplikacji.

Jednostka usługi z certyfikatem

Nazwa zmiennej Wartość
AZURE_CLIENT_ID Identyfikator aplikacji Firmy Microsoft Entra.
AZURE_TENANT_ID Identyfikator dzierżawy microsoft Entra aplikacji.
AZURE_CLIENT_CERTIFICATE_PATH Ścieżka do pliku certyfikatu zakodowanego w formacie PEM, w tym klucza prywatnego (bez ochrony haseł).
AZURE_CLIENT_CERTIFICATE_PASSWORD (opcjonalnie) Hasło pliku certyfikatu, jeśli istnieje.
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN (opcjonalnie) Wyślij łańcuch certyfikatów w nagłówku x5c, aby obsługiwać uwierzytelnianie oparte na nazwie podmiotu/wystawcy.

Nazwa użytkownika i hasło

Nazwa zmiennej Wartość
AZURE_CLIENT_ID Identyfikator aplikacji Firmy Microsoft Entra.
AZURE_TENANT_ID Identyfikator dzierżawy microsoft Entra aplikacji.
AZURE_USERNAME Nazwa użytkownika (zazwyczaj adres e-mail).
AZURE_PASSWORD Skojarzone hasło dla danej nazwy użytkownika.

Konfiguracja jest podejmowana w tej kolejności. Jeśli na przykład wartości dla klucza tajnego klienta i certyfikatu są obecne, używany jest klucz tajny klienta.

Następne kroki

W tym artykule opisano uwierzytelnianie aplikacji hostowanych na platformie Azure. 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:

Jeśli wystąpią problemy związane z uwierzytelnianiem aplikacji hostowanych na platformie Azure, zobacz Rozwiązywanie problemów z uwierzytelnianiem aplikacji hostowanych na platformie Azure.

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