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 DefaultAzureCredential
kan 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 EnvironmentCredential
kan 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_ID och 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_PATH och 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:
- Azure App Service och Azure Functions – konfigurationsfelsökning -
- Azure Arc – konfiguration
- Azure Kubernetes Service – konfigurationsfelsökning -
- Azure Service Fabric – konfiguration
- Felsökning av Azure Virtual Machines och Skalningsuppsättningar – konfiguration -
Hanterad identitet för Azure Virtual Machine
När du använder ManagedIdentityCredential
kan 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 Portal. |
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 Portal. – 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 Portal. – 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 ManagedIdentityCredential
kan 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 ManagedIdentityCredential
kan 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 WorkloadIdentityCredential
kan 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:
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.