microsoftgraph / microsoftgraph/msgraph-sdk-java
Sporadic ClaimsChallengeRequiredException using client secret authentication in newer versions of SDK
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Java
- Sterne
- 444
- Forks
- 154
- Ø Merge
- 18 Std. 28 Min.
- Gemergte PRs (30 T.)
- 4
Beschreibung
Describe the bug
After upgrading the library to version 6.18.0 (or any version other than 6.12.0), we sporadically encounter ClaimsChallengeRequiredExceptions.
When this issue arises, the com.microsoft.graph.serviceclient.GraphServiceClient consistently returns ClaimsChallengeRequiredException, and this can persist for several hours before the problem resolves itself. The issue may or may not recur the following day, with occurrences ranging from twice a day to once every four days.
Sample response from the Graph API:
{
"error":{
"code":"InvalidAuthenticationToken",
"message":"Exception of type 'Microsoft.Graph.AGS.Contracts.ClaimsChallengeRequiredException' was thrown.",
"innerError": {"date":"2024-10-25T12:28:03", "request-id":"f9d0585e-13fc-45d5-8e04-052b9768bcc0", "client-request-id":"83e18f5d-2547-4cac-8aa1-3b11f3a8148d"}
}
}
Downgrading to 6.12.0 will cause the problem to not appea, while other applications running 6.18.0 for the same service principal still get the error.
Expected behavior
We do not expect to get sporadic ClaimsChallengeRequiredException's
How to reproduce
In our spring boot kotlin application we have defined a spring bean for a GraphServiceClient like this
@Bean
fun graphServiceClient(): GraphServiceClient {
return GraphServiceClient(
ClientSecretCredentialBuilder()
.clientId(azureProperties.clientId)
.clientSecret(azureProperties.clientSecret)
.tenantId(azureProperties.tenantId)
.build(),
SCOPES,
)
}
We also have a health check that pings
graphServiceClient.applicationsWithAppId(azureProperties.clientId).get()
to verify that the client works.
With this we can expect the exception to be thrown at any moment / random.
The following image displays occurances of this exception the last 14 days.
SDK Version
6.18.0
Latest version known to work for scenario above?
6.12.0
Known Workarounds
We have currently two workarounds:
- Restarting the application, which reinitializes the GraphServiceClient bean
or - Wait an hour or two for the problem to disappear
Other information
When running multiple instances of the same application, using the same service principal, all instances will be affected at the same time, when this issue occurs.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit der GraphServiceClient-Bean unter Verwendung von ClientSecretCredentialBuilder und des applicationsWithAppId-Health-Checks. Vergleiche das Authentifizierungsverhalten zwischen den SDK-Versionen 6.12.0 und 6.18.0 und konzentriere dich darauf, warum alle Instanzen, die denselben Service Principal verwenden, gemeinsam ClaimsChallengeRequiredException erhalten. Als abgeschlossen gilt die Untersuchung, wenn die sporadisch auftretende Ausnahme reproduziert oder ihre Regression identifiziert wurde und ein verifizierter Fix verfügbar ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- azure, java, kotlin, spring-boot
- Bereich
- api, authentication, backend
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100