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.

Domyślne poświadczenia platformy Azure

DefaultAzureCredential jest odpowiednia w przypadku większości scenariuszy, w których aplikacja jest ostatecznie uruchamiana w chmurze platformy Azure. 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. DefaultAzureCredential próbuje uwierzytelnić się za pomocą następujących mechanizmów w następującej kolejności:

DefaultAzureCredential authentication flow

  • Środowisko — DefaultAzureCredential odczytuje informacje o koncie określone za pośrednictwem zmiennych środowiskowych i używa ich do uwierzytelniania.
  • Tożsamość zarządzana — jeśli aplikacja zostanie wdrożona na hoście platformy Azure z włączoną tożsamością zarządzaną, DefaultAzureCredential uwierzytelnia się przy użyciu tego konta.
  • IntelliJ — jeśli uwierzytelniono się za pomocą zestawu narzędzi Azure Toolkit for IntelliJ, DefaultAzureCredential uwierzytelnia się przy użyciu tego konta.
  • Visual Studio Code — jeśli uwierzytelniono się za pośrednictwem wtyczki konta platformy Azure programu Visual Studio Code, DefaultAzureCredential uwierzytelnia się przy użyciu tego konta.
  • Interfejs wiersza polecenia platformy Azure — jeśli konto zostało uwierzytelnione za pomocą polecenia interfejsu wiersza polecenia az login platformy Azure, DefaultAzureCredential uwierzytelnia się przy użyciu tego konta.

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 środowiskowej AZURE_CLIENT_ID konfiguruje DefaultAzureCredential się do uwierzytelniania jako tożsamości zarządzanej zdefiniowanej 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 środowiskowej AZURE_TENANT_ID powoduje skonfigurowanie DefaultAzureCredential uwierzytelniania w określonej dzierżawie dla udostępnionej pamięci podręcznej tokenów, programu Visual Studio Code i środowiska IntelliJ IDEA.
  • Ustawienie zmiennej AZURE_USERNAME środowiskowej umożliwia DefaultAzureCredential wybranie odpowiedniego buforowanego tokenu z udostępnionej pamięci podręcznej tokenu.
  • Ustawienie .intelliJKeePassDatabasePath(String) w konstruktorze umożliwia DefaultAzureCredential odczytywanie określonego pliku KeePass podczas uwierzytelniania przy użyciu poświadczeń IntelliJ.

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://<your Key Vault name>.vault.azure.net")
  .credential(new DefaultAzureCredentialBuilder().build())
  .buildClient();

Uwierzytelnianie tożsamości zarządzanej przypisanej przez użytkownika za pomocą 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.

/**
 * The default credential uses the user-assigned managed identity with the specified client ID.
 */
DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
  .managedIdentityClientId("<managed identity client 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(defaultCredential)
  .buildClient();

Uwierzytelnianie użytkownika w zestawie narzędzi Azure Toolkit for IntelliJ przy użyciu polecenia DefaultAzureCredential

W poniższym przykładzie pokazano uwierzytelnianie SecretClient z biblioteki klienta azure-security-keyvault-secrets przy użyciu programu , na stacji roboczej, na której zainstalowano środowisko IntelliJ IDEA, a użytkownik zalogował się przy użyciu DefaultAzureCredentialkonta platformy Azure do zestawu narzędzi Azure Toolkit for IntelliJ.

Aby uzyskać więcej informacji na temat konfigurowania środowiska IntelliJ IDEA, zobacz Sign in Azure Toolkit for IntelliJ for IntelliJCredential (Logowanie się do zestawu narzędzi Azure Toolkit for IntelliJCredential).

/**
 * The default credential uses the KeePass database path to find the user account in IntelliJ on Windows.
 */
// KeePass configuration is required only for Windows. No configuration needed for Linux / Mac.
DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder()
  .intelliJKeePassDatabasePath("C:\\Users\\user\\AppData\\Roaming\\JetBrains\\IdeaIC2020.1\\c.kdbx")
  .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(defaultCredential)
  .buildClient();

Poświadczenia tożsamości zarządzanej

Tożsamość zarządzana uwierzytelnia tożsamość zarządzaną (system lub przypisany przez użytkownika) zasobu platformy Azure. Dlatego jeśli aplikacja działa 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 punktów końcowych, to to poświadczenie pobiera uwierzytelnienie aplikacji i oferuje doskonałe ś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 maszynie wirtualnej, usłudze app service, aplikacji funkcji, usłudze Cloud Shell, usłudze Service Fabric, arc lub AKS na platformie Azure z włączoną tożsamością zarządzaną przypisaną przez system lub przypisaną przez użytkownika.

/**
 * Authenticate with a managed identity.
 */
ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredentialBuilder()
  .clientId("<user-assigned managed identity client ID>") // required only for user-assigned
  .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(managedIdentityCredential)
  .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ł).

Nazwa użytkownika i hasło

Nazwa zmiennej Wartość
AZURE_CLIENT_ID Identyfikator aplikacji Firmy Microsoft Entra.
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.