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 CredentialUnavailableException token 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_ID en AZURE_TENANT_ID AZURE_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_ID en AZURE_CLIENT_CERTIFICATE_PATH eventueel 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:
- Azure-app Service en Azure Functions - configuratieproblemen - oplossen
- Azure Arc - configuratie
- Azure Kubernetes Service - configuratieproblemen - oplossen
- Azure Service Fabric -configuratie
- Problemen met virtuele Azure-machines en schaalsets - - configuratie oplossen
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, 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 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 clientId en tenantId tokenFilePath 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.