Share via


Problemen met door Azure gehoste toepassingsverificatie oplossen

Dit artikel bevat richtlijnen voor het oplossen van problemen die zijn opgetreden bij het verifiëren van Azure SDK voor Java-toepassingen die worden gehost in Azure, via verschillende TokenCredential implementaties. Zie Verificatie van door Azure gehoste Java-toepassingen voor meer informatie.

Problemen met DefaultAzureCredential oplossen

Wanneer u gebruikt DefaultAzureCredential, kunt u eventueel proberen /catch voor CredentialUnavailableException. In de volgende tabel ziet u de fouten die met deze uitzondering worden aangegeven en methoden voor beperking:

Foutmelding Beschrijving Oplossing
CredentialUnavailableException raised with message "DefaultAzureCredential failed to retrieve a token from the included credentials." Alle referenties in de DefaultAzureCredential keten kunnen geen token ophalen, waarbij elk een CredentialUnavailableExceptiontoken genereert. Schakel logboekregistratie in om de referenties te verifiëren die worden geprobeerd en meer diagnostische gegevens op te halen.

Zie de gids voor probleemoplossing voor een van de volgende onderliggende referentietypen voor meer informatie:
- EnvironmentCredential
- ManagedIdentityCredential
- VisualStudioCodeCredential
- AzureCLICredential
- AzurePowershellCredential
HttpResponseException raised from the client with a status code of 401 or 403 Verificatie is geslaagd, maar de autorisatie van de Azure-service heeft gereageerd met de statuscode 401 (Verifiëren) of 403 (Verboden). Dit probleem treedt vaak op wanneer DefaultAzureCredential een ander account dan het beoogde account of het beoogde account niet over de juiste machtigingen of rollen beschikt. Schakel logboekregistratie in om te bepalen welke referentie in de keten het verificatietoken heeft geretourneerd.

Als een andere referentie dan de verwachte referentie een token retourneert, moet u dit probleem omzeilen door u af te melden bij het bijbehorende ontwikkelprogramma.

Zorg ervoor dat de juiste rol is toegewezen aan het account dat wordt gebruikt. Bijvoorbeeld een servicespecifieke rol in plaats van de rol Abonnementseigenaar.

Problemen met EnvironmentCredential oplossen

Wanneer u gebruikt EnvironmentCredential, kunt u eventueel proberen /catch voor CredentialUnavailableException. In de volgende tabel ziet u de fouten die met deze uitzondering worden aangegeven en methoden voor beperking:

Foutmelding Beschrijving Oplossing
Environment variables aren't fully configured. Er is geen geldige combinatie van omgevingsvariabelen ingesteld. Zorg ervoor dat de juiste omgevingsvariabelen zijn ingesteld voordat de toepassing wordt opgestart voor de beoogde verificatiemethode, zoals beschreven in de volgende lijst:
- Als u een service-principal wilt verifiëren met behulp van een clientgeheim, moet u ervoor zorgen dat de variabelen AZURE_CLIENT_IDen AZURE_TENANT_IDAZURE_CLIENT_SECRET correct zijn ingesteld.
- Als u een service-principal wilt verifiëren met behulp van een certificaat, moet u ervoor zorgen dat de variabelen AZURE_CLIENT_ID, AZURE_TENANT_IDen AZURE_CLIENT_CERTIFICATE_PATHeventueel AZURE_CLIENT_CERTIFICATE_PASSWORD correct zijn ingesteld.
- Als u een gebruiker wilt verifiëren met een wachtwoord, moet u ervoor zorgen dat de variabelen AZURE_USERNAME correct AZURE_PASSWORD zijn ingesteld.

Problemen met ManagedIdentityCredential oplossen

ManagedIdentityCredential is ontworpen om te werken op verschillende Azure-hosts die beheerde identiteit bieden. Het configureren van de beheerde identiteit en fouten bij het oplossen van problemen verschilt van host tot host. In de volgende lijst ziet u de Azure-hostomgevingen die u kunt toewijzen aan een beheerde identiteit en die ManagedIdentityCredential ondersteuning biedt voor:

Beheerde identiteit voor Azure Virtual Machine

Wanneer u gebruikt ManagedIdentityCredential, kunt u eventueel proberen /catch voor CredentialUnavailableException. In de volgende tabel ziet u de fouten die met deze uitzondering worden aangegeven en methoden voor beperking:

Foutmelding Beschrijving Oplossing
The requested identity hasn't been assigned to this resource. Het EINDPUNT van de Azure Instance Metadata Service (IMDS) heeft gereageerd met een statuscode van 400, waarmee wordt aangegeven dat de aangevraagde identiteit niet is toegewezen aan de virtuele machine (VM). Als u een door de gebruiker toegewezen identiteit gebruikt, controleert u of de opgegeven clientId identiteit juist is.

Als u een door het systeem toegewezen identiteit gebruikt, controleert u of u deze juist hebt ingeschakeld. Zie voor meer informatie de door het systeem toegewezen beheerde identiteit inschakelen op een bestaande VM-sectie van Beheerde identiteiten configureren voor Azure-resources op een VIRTUELE machine met behulp van Azure Portal.
The request failed due to a gateway error. De aanvraag voor het IMDS-eindpunt is mislukt vanwege een gatewayfout, de statuscode 502 of 504. IMDS biedt geen ondersteuning voor oproepen via proxy of gateway. Proxy's of gateways uitschakelen die op de VM worden uitgevoerd voor aanroepen naar het IMDS-eindpunt http://169.254.169.254/
No response received from the managed identity endpoint. Er is geen antwoord ontvangen voor de aanvraag voor IMDS of er is een time-out opgetreden voor de aanvraag. - Zorg ervoor dat u de beheerde identiteit op de VM correct hebt geconfigureerd. Zie Beheerde identiteiten configureren voor Azure-resources op een VIRTUELE machine met behulp van Azure Portal voor meer informatie.
- Controleer of het IMDS-eindpunt bereikbaar is op de VIRTUELE machine. Zie de volgende sectie voor meer informatie.
Multiple attempts failed to obtain a token from the managed identity endpoint. Nieuwe pogingen om een token op te halen van het IMDS-eindpunt zijn uitgeput. - Zie de interne uitzonderingsberichten voor meer informatie over specifieke fouten. Als de gegevens zijn afgekapt, kunt u meer details verkrijgen door logboeken te verzamelen.
- Zorg ervoor dat u de beheerde identiteit op de VM correct hebt geconfigureerd. Zie Beheerde identiteiten configureren voor Azure-resources op een VIRTUELE machine met behulp van Azure Portal voor meer informatie.
- Controleer of het IMDS-eindpunt bereikbaar is op de VIRTUELE machine. Zie de volgende sectie voor meer informatie.

Controleer of IMDS beschikbaar is op de VIRTUELE machine

Als u toegang hebt tot de virtuele machine, kunt u controleren of het beheerde identiteitseindpunt beschikbaar is via de opdrachtregel, curlzoals wordt weergegeven in het volgende voorbeeld:

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

Waarschuwing

De uitvoer van deze opdracht bevat een geldig toegangstoken. Als u de beveiliging van accounts wilt voorkomen, deelt u dit toegangstoken niet.

Beheerde identiteit voor Azure App Service en Azure Functions

Wanneer u gebruikt ManagedIdentityCredential, kunt u eventueel proberen /catch voor CredentialUnavailableException. In de volgende tabel ziet u de fouten die met deze uitzondering worden aangegeven en methoden voor beperking:

Foutmelding Beschrijving Oplossing
ManagedIdentityCredential authentication unavailable. De omgevingsvariabelen die door de App Services-host zijn geconfigureerd, zijn niet aanwezig. - Zorg ervoor dat u de beheerde identiteit op de Juiste manier hebt geconfigureerd op het App Service-exemplaar. Zie Beheerde identiteiten gebruiken voor App Service en Azure Functions voor meer informatie.
- Controleer of u de App Service-omgeving correct hebt geconfigureerd en of het eindpunt van de beheerde identiteit beschikbaar is. Zie de volgende sectie voor meer informatie.

Controleer of het App Service Managed Identity-eindpunt beschikbaar is

Als u toegang hebt tot SSH in het App Service-exemplaar, kunt u controleren of de beheerde identiteit beschikbaar is in de omgeving. Zorg er eerst voor dat u de omgevingsvariabelen MSI_ENDPOINT en MSI_SECRET in de omgeving hebt ingesteld. Vervolgens kunt u controleren of het eindpunt van de beheerde identiteit beschikbaar is met behulp van curl, zoals wordt weergegeven in het volgende voorbeeld:

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

Waarschuwing

De uitvoer van deze opdracht bevat een geldig toegangstoken. Als u de beveiliging van accounts wilt voorkomen, deelt u dit toegangstoken niet.

Beheerde identiteit van Azure Kubernetes Service

Pod-identiteit voor Kubernetes

Wanneer u gebruikt ManagedIdentityCredential, kunt u eventueel proberen /catch voor CredentialUnavailableException. In de volgende tabel ziet u de fouten die met deze uitzondering worden aangegeven en methoden voor beperking:

Foutmelding Beschrijving Oplossing
No Managed Identity endpoint found De toepassing heeft geprobeerd te verifiëren voordat een identiteit is toegewezen aan de pod. Controleer of de pod correct is gelabeld. Dit probleem treedt ook op wanneer een correct gelabelde pod wordt geverifieerd voordat de identiteit gereed is. Als u initialisatieraces wilt voorkomen, configureert u NMI om de header in de Retry-After antwoorden in te stellen. Zie Set Retry-After header in NMI response in the Pod Identity documentation (Pod Identity) voor meer informatie.

Problemen met WorkloadIdentityCredential oplossen

Wanneer u gebruikt WorkloadIdentityCredential, kunt u eventueel proberen /catch voor CredentialUnavailableException. In de volgende tabel ziet u de fouten die met deze uitzondering worden aangegeven en methoden voor beperking:

Foutmelding Beschrijving Oplossing
WorkloadIdentityCredential authentication unavailable. The workload options aren't fully configured. WorkloadIdentityCredential vereist clientIden tenantIdtokenFilePath om te verifiëren met Microsoft Entra-id. Als u werkt, gaat u als volgt te werk DefaultAzureCredential:
- Zorg ervoor dat de client-id is opgegeven via de workloadIdentityClientId setter of de AZURE_CLIENT_ID omgevingsvariabele.
- Zorg ervoor dat de tenant-id is opgegeven via de AZURE_TENANT_ID omgevingsvariabele.
- Zorg ervoor dat u het pad naar het tokenbestand hebt opgegeven via de AZURE_FEDERATED_TOKEN_FILE omgevingsvariabele.
- Zorg ervoor dat de instantiehost is opgegeven via de AZURE_AUTHORITY_HOST omgevingsvariabele.

Als u werkt, gaat u als volgt te werk WorkloadIdentityCredential:
- Zorg ervoor dat de tenant-id is opgegeven via de tenantId setter op de opbouwfunctie voor referenties of de AZURE_TENANT_ID omgevingsvariabele.
- Zorg ervoor dat de client-id is opgegeven via de clientId setter op de opbouwfunctie voor referenties of de AZURE_CLIENT_ID omgevingsvariabele.
- Zorg ervoor dat het pad naar het tokenbestand is opgegeven via de tokenFilePath setter op de opbouwfunctie voor referenties of de AZURE_FEDERATED_TOKEN_FILE omgevingsvariabele.
- Zie de handleiding voor het oplossen van problemen met producten voor andere problemen.

Volgende stappen

Als de richtlijnen voor probleemoplossing in dit artikel niet helpen bij het oplossen van problemen wanneer u de Azure SDK voor Java-clientbibliotheken gebruikt, raden we u aan een probleem op te slaan in de Azure SDK voor Java GitHub-opslagplaats.