Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel worden technieken voor foutonderzoek beschreven, veelvoorkomende fouten voor de referentietypen in de Azure Identity Java-clientbibliotheek en oplossingsstappen om deze fouten op te lossen. Omdat er veel referentietypen beschikbaar zijn in de Azure SDK voor Java, hebben we de gids voor probleemoplossing opgesplitst in secties op basis van het gebruiksscenario. De volgende secties zijn beschikbaar:
- Problemen met door Azure gehoste toepassingsverificatie oplossen
- Problemen met verificatie van ontwikkelomgevingen oplossen
- Problemen met de authenticatie van service principals oplossen
- Multitenant-authenticatieproblemen oplossen
In de rest van dit artikel worden algemene probleemoplossingstechnieken en richtlijnen beschreven die van toepassing zijn op alle referentietypen.
Azure Identity-uitzonderingen verwerken
Zoals vermeld in de uitzonderingsafhandeling in de sectie Azure SDK voor Java van het overzicht van probleemoplossing, is er een uitgebreide set uitzonderingen en foutcodes die de Azure SDK voor Java kan genereren. Voor Azure Identity zijn er een aantal belangrijke uitzonderingstypen die belangrijk zijn om te begrijpen.
ClientAuthenticationException
Elke serviceclientmethode die een aanvraag naar de service indient, kan uitzonderingen veroorzaken die voortvloeien uit verificatiefouten. Deze uitzonderingen zijn mogelijk omdat het token wordt aangevraagd vanuit de referentie bij de eerste aanroep naar de service en bij eventuele volgende aanvragen voor de service die het token moeten vernieuwen.
Als u deze fouten wilt onderscheiden van fouten in de serviceclient, geven ClientAuthenticationException Azure Identity-klassen een beschrijving van de bron van de fout in het uitzonderingsbericht en mogelijk het foutbericht. Afhankelijk van de toepassing kunnen deze fouten wel of niet worden hersteld. De volgende code toont een voorbeeld van het vangen ClientAuthenticationException:
// Create a secret client using the DefaultAzureCredential
SecretClient client = new SecretClientBuilder()
    .vaultUrl("https://myvault.vault.azure.net/")
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildClient();
try {
    KeyVaultSecret secret = client.getSecret("secret1");
} catch (ClientAuthenticationException e) {
    //Handle Exception
    e.printStackTrace();
}
CredentialUnavailableException (Referentie niet beschikbaar uitzondering)
              CredentialUnavailableException is een speciaal uitzonderingstype dat is afgeleid van ClientAuthenticationException. Dit uitzonderingstype wordt gebruikt om aan te geven dat de referentie niet kan worden geverifieerd in de huidige omgeving vanwege een gebrek aan vereiste configuratie of installatie. Deze uitzondering wordt ook gebruikt als signaal voor gekoppelde referentietypen, zoals DefaultAzureCredential en ChainedTokenCredential, dat de gekoppelde referentie later in de keten andere referentietypen moet blijven proberen.
Machtigingsproblemen
Aanroepen naar serviceclients die resulteren in HttpResponseException een StatusCode van 401 of 403 geven vaak aan dat de aanroeper niet over voldoende machtigingen beschikt voor de opgegeven API. Raadpleeg de servicedocumentatie om te bepalen welke rollen nodig zijn voor de specifieke aanvraag. Zorg ervoor dat de geverifieerde gebruiker of service-principal de juiste rollen voor de resource heeft gekregen.
Relevante informatie zoeken in uitzonderingsberichten
              ClientAuthenticationException wordt gegooid wanneer er onverwachte fouten optreden tijdens het verifiëren van authenticatiegegevens. Deze fouten kunnen fouten bevatten die zijn ontvangen van aanvragen naar de Microsoft Entra-beveiligingstokenservice (STS) en bevatten vaak informatie die nuttig is voor diagnose. Houd rekening met het volgende ClientAuthenticationException bericht:
ClientSecretCredential authentication failed: A configuration issue is preventing authentication - check the error message from the server for details. You can modify the configuration in the application registration portal. See https://aka.ms/msal-net-invalid-client for details.
Original exception:
AADSTS7000215: Invalid client secret provided. Ensure the secret being sent in the request is the client secret value, not the client secret ID, for a secret added to app 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.
Trace ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Correlation ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Timestamp: 2022-01-01 00:00:00Z
Dit foutbericht bevat de volgende informatie:
- Mislukt referentietype: het type referentie dat niet geauthentiseerd kon worden - in dit geval - ClientSecretCredential. Deze informatie is handig bij het diagnosticeren van problemen met gekoppelde referentietypen, zoals- DefaultAzureCredentialof- ChainedTokenCredential.
- STS-foutcode en -bericht: De foutcode en het bericht die zijn geretourneerd door Microsoft Entra STS. In dit geval - AADSTS7000215: Invalid client secret provided.kan deze informatie inzicht geven in de specifieke reden waarom de aanvraag is mislukt. In dit specifieke geval is het opgegeven clientgeheim bijvoorbeeld onjuist. Zie de sectie AADSTS-foutcodes van Microsoft Entra-verificatie- en autorisatiefoutcodes voor meer informatie over STS-foutcodes.
- Correlatie-id en tijdstempel: de correlatie-id en tijdstempel die worden gebruikt om de aanvraag in logboeken aan de serverzijde te identificeren. Deze informatie is handig om technici te ondersteunen bij het diagnosticeren van onverwachte STS-fouten. 
Logboekregistratie inschakelen en configureren
Azure SDK voor Java biedt een consistente logboekfunctie om toepassingsfouten op te lossen en hun oplossing te versnellen. De logboeken die worden geproduceerd, leggen de stroom van een toepassing vast voordat de terminalstatus wordt bereikt om het hoofdprobleem op te sporen. Zie Logboekregistratie configureren in de Azure SDK voor Java en Problemen oplossen - overzicht voor begeleiding bij logboekregistratie.
De onderliggende MSAL-bibliotheek, MSAL4J, heeft ook gedetailleerde logboekregistratie. Deze logboekregistratie is zeer uitgebreid en bevat alle persoonlijke gegevens, inclusief tokens. Deze logboekregistratie is het handigst bij het werken met productondersteuning. Vanaf versie v1.10.0 hebben invoergegevens die deze logging bieden een methode met de naam enableUnsafeSupportLogging().
Waarschuwing
Aanvragen en antwoorden in de Azure Identity-bibliotheek bevatten gevoelige informatie. U moet voorzorgsmaatregelen nemen om logboeken te beschermen bij het aanpassen van de uitvoer om te voorkomen dat de accountbeveiliging in gevaar komt.
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.