Rozwiązywanie problemów z uwierzytelnianiem aplikacji hostowanych na platformie Azure
Ten artykuł zawiera wskazówki dotyczące rozwiązywania problemów napotkanych podczas uwierzytelniania zestawu Azure SDK dla aplikacji Java hostowanych na platformie Azure za pomocą różnych TokenCredential
implementacji. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie aplikacji Java hostowanych na platformie Azure.
Rozwiązywanie problemów z wartością domyślnąAzureCredential
W przypadku korzystania z programu DefaultAzureCredential
możesz opcjonalnie wypróbować/złapać dla elementu CredentialUnavailableException
. W poniższej tabeli przedstawiono błędy wskazujące ten wyjątek oraz metody ograniczania ryzyka:
Komunikat o błędzie | opis | Ograniczanie ryzyka |
---|---|---|
CredentialUnavailableException raised with message "DefaultAzureCredential failed to retrieve a token from the included credentials." |
Wszystkie poświadczenia w łańcuchu DefaultAzureCredential nie mogą pobrać tokenu, z których każdy zgłasza CredentialUnavailableException błąd . |
Włącz rejestrowanie , aby zweryfikować próby poświadczeń i uzyskać dalsze informacje diagnostyczne. Aby uzyskać więcej informacji, zobacz przewodnik rozwiązywania problemów dla jednego z następujących podstawowych typów poświadczeń: - EnvironmentCredential - ManagedIdentityCredential - VisualStudioCodeCredential - AzureCLICredential - AzurePowershellCredential |
HttpResponseException raised from the client with a status code of 401 or 403 |
Uwierzytelnianie zakończyło się pomyślnie, ale autoryzowanie usługi platformy Azure odpowiedziało kodem stanu 401 (Uwierzytelnianie) lub 403 (Zabronione). Ten problem często występuje, gdy DefaultAzureCredential uwierzytelnia konto inne niż zamierzone lub zamierzone konto nie ma przypisanych odpowiednich uprawnień ani ról. |
Włącz rejestrowanie , aby określić, które poświadczenia w łańcuchu zwróciły token uwierzytelniania. W przypadku, gdy poświadczenie inne niż oczekiwane zwraca token, poszukaj obejścia tego problemu, wyloguj się z odpowiedniego narzędzia programistycznego. Upewnij się, że do używanego konta przypisano prawidłową rolę. Na przykład rola specyficzna dla usługi, a nie rola właściciel subskrypcji. |
Rozwiązywanie problemów ze środowiskiemTworzenie
W przypadku korzystania z programu EnvironmentCredential
możesz opcjonalnie wypróbować/złapać dla elementu CredentialUnavailableException
. W poniższej tabeli przedstawiono błędy wskazujące ten wyjątek oraz metody ograniczania ryzyka:
Komunikat o błędzie | opis | Ograniczanie ryzyka |
---|---|---|
Environment variables aren't fully configured. |
Nie ustawiono prawidłowej kombinacji zmiennych środowiskowych. | Upewnij się, że odpowiednie zmienne środowiskowe są ustawione przed uruchomieniem aplikacji dla zamierzonej metody uwierzytelniania, zgodnie z opisem na poniższej liście: — Aby uwierzytelnić jednostkę usługi przy użyciu klucza tajnego klienta, upewnij się, że zmienne AZURE_CLIENT_ID , AZURE_TENANT_ID i AZURE_CLIENT_SECRET są prawidłowo ustawione. — Aby uwierzytelnić jednostkę usługi przy użyciu certyfikatu, upewnij się, że zmienne AZURE_CLIENT_ID , AZURE_TENANT_ID , AZURE_CLIENT_CERTIFICATE_PATH i opcjonalnie AZURE_CLIENT_CERTIFICATE_PASSWORD są poprawnie ustawione. — Aby uwierzytelnić użytkownika przy użyciu hasła, upewnij się, że zmienne AZURE_USERNAME i AZURE_PASSWORD zostały prawidłowo ustawione. |
Rozwiązywanie problemów z elementem ManagedIdentityCredential
ManagedIdentityCredential
program jest przeznaczony do pracy na różnych hostach platformy Azure, które zapewniają tożsamość zarządzaną. Konfigurowanie tożsamości zarządzanej i rozwiązywanie problemów z błędami różni się od hosta do hosta. Na poniższej liście przedstawiono środowiska hosta platformy Azure, które można przypisać tożsamość zarządzaną i które ManagedIdentityCredential
obsługują:
- aplikacja systemu Azure Service i Azure Functions — rozwiązywanie problemów z konfiguracją -
- Azure Arc — konfiguracja
- Azure Kubernetes Service — rozwiązywanie problemów z konfiguracją -
- Azure Service Fabric — konfiguracja
- Rozwiązywanie problemów z usługami Azure Virtual Machines i Zestawami skalowania — - rozwiązywanie problemów
Tożsamość zarządzana maszyny wirtualnej platformy Azure
W przypadku korzystania z programu ManagedIdentityCredential
możesz opcjonalnie wypróbować/złapać dla elementu CredentialUnavailableException
. W poniższej tabeli przedstawiono błędy wskazujące ten wyjątek oraz metody ograniczania ryzyka:
Komunikat o błędzie | opis | Ograniczanie ryzyka |
---|---|---|
The requested identity hasn't been assigned to this resource. |
Punkt końcowy usługi Azure Instance Metadata Service (IMDS) odpowiedział kodem stanu 400, wskazując, że żądana tożsamość nie jest przypisana do maszyny wirtualnej. | Jeśli używasz tożsamości przypisanej przez użytkownika, upewnij się, że określona clientId wartość jest poprawna. Jeśli używasz tożsamości przypisanej przez system, upewnij się, że została ona prawidłowo włączona. Aby uzyskać więcej informacji, zobacz sekcję Włączanie tożsamości zarządzanej przypisanej przez system w istniejącej maszynie wirtualnej w temacie Konfigurowanie tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej przy użyciu witryny Azure Portal. |
The request failed due to a gateway error. |
Żądanie do punktu końcowego USŁUGI IMDS nie powiodło się z powodu błędu bramy, kodu stanu 502 lub 504. | Usługa IMDS nie obsługuje wywołań za pośrednictwem serwera proxy ani bramy. Wyłączanie serwerów proxy lub bram uruchomionych na maszynie wirtualnej na potrzeby wywołań do punktu końcowego usługi IMDS http://169.254.169.254/ |
No response received from the managed identity endpoint. |
Nie odebrano odpowiedzi dla żądania IMDS lub upłynął limit czasu żądania. | — Upewnij się, że tożsamość zarządzana została prawidłowo skonfigurowana na maszynie wirtualnej. Aby uzyskać więcej informacji, zobacz Konfigurowanie tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej przy użyciu witryny Azure Portal. — Sprawdź, czy punkt końcowy USŁUGI IMDS jest osiągalny na maszynie wirtualnej. Aby uzyskać więcej informacji, zobacz następną sekcję. |
Multiple attempts failed to obtain a token from the managed identity endpoint. |
Ponowne próby pobrania tokenu z punktu końcowego USŁUGI IMDS zostały wyczerpane. | — Aby uzyskać więcej informacji na temat określonych błędów, zobacz wewnętrzne komunikaty wyjątków. Jeśli dane zostały obcięte, można uzyskać więcej szczegółów, zbierając dzienniki. — Upewnij się, że tożsamość zarządzana została prawidłowo skonfigurowana na maszynie wirtualnej. Aby uzyskać więcej informacji, zobacz Konfigurowanie tożsamości zarządzanych dla zasobów platformy Azure na maszynie wirtualnej przy użyciu witryny Azure Portal. — Sprawdź, czy punkt końcowy USŁUGI IMDS jest osiągalny na maszynie wirtualnej. Aby uzyskać więcej informacji, zobacz następną sekcję. |
Sprawdź, czy usługa IMDS jest dostępna na maszynie wirtualnej
Jeśli masz dostęp do maszyny wirtualnej, możesz sprawdzić, czy punkt końcowy tożsamości zarządzanej jest dostępny za pośrednictwem wiersza polecenia przy użyciu polecenia , curl
jak pokazano w poniższym przykładzie:
curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://management.core.windows.net&api-version=2018-02-01' -H "Metadata: true"
Ostrzeżenie
Dane wyjściowe tego polecenia zawierają prawidłowy token dostępu. Aby uniknąć naruszenia zabezpieczeń konta, nie udostępniaj tego tokenu dostępu.
Tożsamość zarządzana usług Azure App Service i Azure Functions
W przypadku korzystania z programu ManagedIdentityCredential
możesz opcjonalnie wypróbować/złapać dla elementu CredentialUnavailableException
. W poniższej tabeli przedstawiono błędy wskazujące ten wyjątek oraz metody ograniczania ryzyka:
Komunikat o błędzie | opis | Ograniczanie ryzyka |
---|---|---|
ManagedIdentityCredential authentication unavailable. |
Zmienne środowiskowe skonfigurowane przez hosta usługi App Services nie były obecne. | — Upewnij się, że tożsamość zarządzana została prawidłowo skonfigurowana w wystąpieniu usługi App Service. Aby uzyskać więcej informacji, zobacz How to use managed identities for App Service and Azure Functions (Jak używać tożsamości zarządzanych dla usług App Service i Azure Functions). — Sprawdź, czy środowisko usługi App Service zostało prawidłowo skonfigurowane i czy punkt końcowy tożsamości zarządzanej jest dostępny. Aby uzyskać więcej informacji, zobacz następną sekcję. |
Sprawdź, czy punkt końcowy tożsamości zarządzanej usługi App Service jest dostępny
Jeśli masz dostęp do protokołu SSH w wystąpieniu usługi App Service, możesz sprawdzić, czy tożsamość zarządzana jest dostępna w środowisku. Najpierw upewnij się, że ustawiono zmienne MSI_ENDPOINT
środowiskowe i MSI_SECRET
w środowisku. Następnie możesz sprawdzić, czy punkt końcowy tożsamości zarządzanej jest dostępny przy użyciu metody curl
, jak pokazano w poniższym przykładzie:
curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://management.core.windows.net&api-version=2018-02-01' -H "Metadata: true"
Ostrzeżenie
Dane wyjściowe tego polecenia zawierają prawidłowy token dostępu. Aby uniknąć naruszenia zabezpieczeń konta, nie udostępniaj tego tokenu dostępu.
Tożsamość zarządzana usługi Azure Kubernetes Service
Tożsamość zasobnika dla platformy Kubernetes
W przypadku korzystania z programu ManagedIdentityCredential
możesz opcjonalnie wypróbować/złapać dla elementu CredentialUnavailableException
. W poniższej tabeli przedstawiono błędy wskazujące ten wyjątek oraz metody ograniczania ryzyka:
Komunikat o błędzie | opis | Ograniczanie ryzyka |
---|---|---|
No Managed Identity endpoint found |
Aplikacja próbowała uwierzytelnić się przed przypisaniem tożsamości do zasobnika. | Sprawdź, czy zasobnik jest poprawnie oznaczony etykietą. Ten problem występuje również, gdy poprawnie oznaczony zasobnik uwierzytelnia się przed przygotowaniem tożsamości. Aby zapobiec wyścigom inicjowania, skonfiguruj NMI, aby ustawić Retry-After nagłówek w odpowiedziach. Aby uzyskać więcej informacji, zobacz Set Retry-After header in NMI response (Ustawianie nagłówka Po ponowieniu próby w odpowiedzi NMI) w dokumentacji tożsamości zasobnika. |
Rozwiązywanie problemów z obciążeniamidentityCredential
W przypadku korzystania z programu WorkloadIdentityCredential
możesz opcjonalnie wypróbować/złapać dla elementu CredentialUnavailableException
. W poniższej tabeli przedstawiono błędy wskazujące ten wyjątek oraz metody ograniczania ryzyka:
Następne kroki
Jeśli wskazówki dotyczące rozwiązywania problemów w tym artykule nie pomogą rozwiązać problemów podczas korzystania z bibliotek klienckich zestawu Azure SDK dla języka Java, zalecamy zgłoszenie problemu w repozytorium GitHub zestawu Azure SDK dla języka Java.