Felsöka Azure-värdbaserad programautentisering

Den här artikeln innehåller vägledning om hur du hanterar problem som uppstår vid autentisering av Azure SDK för Java-program som finns i Azure, via olika TokenCredential implementeringar. Mer information finns i Autentisera Azure-värdbaserade Java-program.

Felsöka StandardAzureCredential

När du använder DefaultAzureCredentialkan du prova/fånga för CredentialUnavailableException. I följande tabell visas de fel som det här undantaget anger och metoder för att minska:

Felmeddelande beskrivning Åtgärd
CredentialUnavailableException raised with message "DefaultAzureCredential failed to retrieve a token from the included credentials." Alla autentiseringsuppgifter i DefaultAzureCredential kedjan kunde inte hämta en token, var och en genererar en CredentialUnavailableException. Aktivera loggning för att verifiera de autentiseringsuppgifter som testas och få ytterligare diagnostikinformation.

Mer information finns i felsökningsguiden för någon av följande underliggande typer av autentiseringsuppgifter:
- EnvironmentCredential
- ManagedIdentityCredential
- VisualStudioCodeCredential
- AzureCLICredential
- AzurePowershellCredential
HttpResponseException raised from the client with a status code of 401 or 403 Autentiseringen lyckades men den auktoriserande Azure-tjänsten svarade med statuskoden 401 (autentisera) eller 403 (förbjuden). Det här problemet uppstår ofta när DefaultAzureCredential ett annat konto autentiseras än det avsedda eller om det avsedda kontot inte har rätt behörigheter eller roller tilldelade. Aktivera loggning för att avgöra vilka autentiseringsuppgifter i kedjan som returnerade autentiseringstoken.

Om en annan autentiseringsuppgift än den förväntade returnerar en token kan du försöka kringgå det här problemet genom att logga ut från motsvarande utvecklingsverktyg.

Kontrollera att rätt roll har tilldelats det konto som används. Till exempel en tjänstspecifik roll i stället för rollen prenumerationsägare.

Felsöka EnvironmentCredential

När du använder EnvironmentCredentialkan du prova/fånga för CredentialUnavailableException. I följande tabell visas de fel som det här undantaget anger och metoder för att minska:

Felmeddelande beskrivning Åtgärd
Environment variables aren't fully configured. En giltig kombination av miljövariabler har inte angetts. Kontrollera att lämpliga miljövariabler har angetts innan programmet startas för den avsedda autentiseringsmetoden enligt beskrivningen i följande lista:
– Om du vill autentisera ett huvudnamn för tjänsten med hjälp av en klienthemlighet kontrollerar du att variablerna AZURE_CLIENT_ID, AZURE_TENANT_IDoch AZURE_CLIENT_SECRET är korrekt inställda.
– Om du vill autentisera ett huvudnamn för tjänsten med hjälp av ett certifikat kontrollerar du att variablerna AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_CERTIFICATE_PATHoch eventuellt AZURE_CLIENT_CERTIFICATE_PASSWORD är korrekt inställda.
– Om du vill autentisera en användare med ett lösenord kontrollerar du att variablerna AZURE_USERNAME och AZURE_PASSWORD är korrekt inställda.

Felsöka ManagedIdentityCredential

ManagedIdentityCredential är utformad för att fungera på olika Azure-värdar som tillhandahåller hanterad identitet. Konfigurationen av den hanterade identiteten och felsökningsfelen varierar från värd till värd. I följande lista visas de Azure-värdmiljöer som du kan tilldela en hanterad identitet och som ManagedIdentityCredential stöder:

Hanterad identitet för Azure Virtual Machine

När du använder ManagedIdentityCredentialkan du prova/fånga för CredentialUnavailableException. I följande tabell visas de fel som det här undantaget anger och metoder för att minska:

Felmeddelande beskrivning Åtgärd
The requested identity hasn't been assigned to this resource. Slutpunkten för Azure Instance Metadata Service (IMDS) svarade med statuskoden 400, vilket indikerar att den begärda identiteten inte har tilldelats till den virtuella datorn (VM). Om du använder en användartilldelad identitet kontrollerar du att den angivna clientId är korrekt.

Om du använder en systemtilldelad identitet kontrollerar du att du har aktiverat den korrekt. Mer information finns i avsnittet Aktivera systemtilldelad hanterad identitet på en befintlig virtuell dator i Konfigurera hanterade identiteter för Azure-resurser på en virtuell dator med hjälp av Azure-portalen.
The request failed due to a gateway error. Begäran till IMDS-slutpunkten misslyckades på grund av ett gatewayfel, statuskoden 502 eller 504. IMDS stöder inte anrop via proxy eller gateway. Inaktivera proxyservrar eller gatewayer som körs på den virtuella datorn för anrop till IMDS-slutpunkten http://169.254.169.254/
No response received from the managed identity endpoint. Inget svar togs emot för begäran till IMDS eller tidsgränsen för begäran. – Kontrollera att du har konfigurerat den hanterade identiteten korrekt på den virtuella datorn. Mer information finns i Konfigurera hanterade identiteter för Azure-resurser på en virtuell dator med hjälp av Azure-portalen.
– Kontrollera att IMDS-slutpunkten kan nås på den virtuella datorn. Mer information finns i nästa avsnitt.
Multiple attempts failed to obtain a token from the managed identity endpoint. Återförsök för att hämta en token från IMDS-slutpunkten har uttömts. – Mer information om specifika fel finns i de inre undantagsmeddelandena. Om data har trunkerats kan du hämta mer information genom att samla in loggar.
– Kontrollera att du har konfigurerat den hanterade identiteten korrekt på den virtuella datorn. Mer information finns i Konfigurera hanterade identiteter för Azure-resurser på en virtuell dator med hjälp av Azure-portalen.
– Kontrollera att IMDS-slutpunkten kan nås på den virtuella datorn. Mer information finns i nästa avsnitt.

Kontrollera att IMDS är tillgängligt på den virtuella datorn

Om du har åtkomst till den virtuella datorn kan du kontrollera att den bemannade identitetsslutpunkten är tillgänglig via kommandoraden med hjälp av curl, enligt följande exempel:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://management.core.windows.net&api-version=2018-02-01' -H "Metadata: true"

Varning

Utdata från det här kommandot innehåller en giltig åtkomsttoken. Dela inte den här åtkomsttoken för att undvika att äventyra kontosäkerheten.

Hanterad identitet för Azure App Service och Azure Functions

När du använder ManagedIdentityCredentialkan du prova/fånga för CredentialUnavailableException. I följande tabell visas de fel som det här undantaget anger och metoder för att minska:

Felmeddelande beskrivning Åtgärd
ManagedIdentityCredential authentication unavailable. Miljövariablerna som konfigurerats av App Services-värden fanns inte. – Kontrollera att du har konfigurerat den hanterade identiteten på App Service-instansen korrekt. Mer information finns i Använda hanterade identiteter för App Service och Azure Functions.
– Kontrollera att du har konfigurerat App Service-miljön korrekt och att slutpunkten för den hanterade identiteten är tillgänglig. Mer information finns i nästa avsnitt.

Kontrollera att slutpunkten för Hanterad identitet i App Service är tillgänglig

Om du har åtkomst till SSH till App Service-instansen kan du kontrollera att den hanterade identiteten är tillgänglig i miljön. Kontrollera först att du har angett miljövariablerna MSI_ENDPOINT och MSI_SECRET i miljön. Sedan kan du kontrollera att slutpunkten för den hanterade identiteten är tillgänglig med hjälp av curl, som du ser i följande exempel:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?resource=https://management.core.windows.net&api-version=2018-02-01' -H "Metadata: true"

Varning

Utdata från det här kommandot innehåller en giltig åtkomsttoken. Dela inte den här åtkomsttoken för att undvika att äventyra kontosäkerheten.

Hanterad identitet för Azure Kubernetes Service

Poddidentitet för Kubernetes

När du använder ManagedIdentityCredentialkan du prova/fånga för CredentialUnavailableException. I följande tabell visas de fel som det här undantaget anger och metoder för att minska:

Felmeddelande beskrivning Åtgärd
No Managed Identity endpoint found Programmet försökte autentisera innan en identitet tilldelades till podden. Kontrollera att podden är korrekt märkt. Det här problemet uppstår också när en korrekt märkt podd autentiserar innan identiteten är klar. För att förhindra initieringstävlingar konfigurerar du NMI för att ange Retry-After huvudet i dess svar. Mer information finns i Ange återförsökshuvud i NMI-svar i dokumentationen för poddidentitet.

Felsöka WorkloadIdentityCredential

När du använder WorkloadIdentityCredentialkan du prova/fånga för CredentialUnavailableException. I följande tabell visas de fel som det här undantaget anger och metoder för att minska:

Felmeddelande beskrivning Åtgärd
WorkloadIdentityCredential authentication unavailable. The workload options aren't fully configured. WorkloadIdentityCredential kräver clientId, tenantId och tokenFilePath för att autentisera med Microsoft Entra-ID. Om du använder , DefaultAzureCredentialså här:
– Kontrollera att klient-ID anges via workloadIdentityClientId setter- eller AZURE_CLIENT_ID miljövariabeln.
– Kontrollera att klientorganisations-ID anges via AZURE_TENANT_ID miljövariabeln.
– Kontrollera att du har angett sökvägen till tokenfilen via AZURE_FEDERATED_TOKEN_FILE miljövariabeln.
– Kontrollera att utfärdarvärden har angetts via AZURE_AUTHORITY_HOST miljövariabeln.

Om du använder , WorkloadIdentityCredentialså här:
– Se till att klientorganisations-ID anges via tenantId setter på autentiseringsverktyget eller AZURE_TENANT_ID miljövariabeln.
– Kontrollera att klient-ID anges via clientId setter på autentiseringsverktyget eller AZURE_CLIENT_ID miljövariabeln.
– Kontrollera att sökvägen till tokenfilen anges via tokenFilePath setter på autentiseringsverktyget eller AZURE_FEDERATED_TOKEN_FILE miljövariabeln.
– Mer information finns i felsökningsguiden för produkten.

Nästa steg

Om felsökningsguiden i den här artikeln inte hjälper till att lösa problem när du använder Azure SDK för Java-klientbibliotek rekommenderar vi att du skapar ett problem i Azure SDK för Java GitHub-lagringsplatsen.