[Bug] If JWT contains a '-', it will cause an explanation token exception: java.lang.IllegalArgumentException: Illegal base64 character 2d #937
Labels
Bug
Something isn't working, needs an investigation and a fix
P1
High priority items, should be done before any other work
Regression
Behavior that worked in a previous release that no longer works in a newer release
Library version used
1.20.0
Java version
JDK 1.8
Scenario
PublicClient (AcquireTokenInteractive, AcquireTokenByUsernamePassword)
Is this a new or an existing app?
None
Issue description and reproduction steps
login by username and password will Exception
Exception Info:
Caused by: java.lang.IllegalArgumentException: Illegal base64 character 2d at java.util.Base64$Decoder.decode0(Base64.java:714) at java.util.Base64$Decoder.decode(Base64.java:526) at java.util.Base64$Decoder.decode(Base64.java:549) at com.microsoft.aad.msal4j.TokenRequestExecutor.createAuthenticationResultFromOauthHttpResponse(TokenRequestExecutor.java:122) at com.microsoft.aad.msal4j.TokenRequestExecutor.executeTokenRequest(TokenRequestExecutor.java:42) at com.microsoft.aad.msal4j.AbstractApplicationBase.acquireTokenCommon(AbstractApplicationBase.java:74) at com.microsoft.aad.msal4j.AcquireTokenByAuthorizationGrantSupplier.execute(AcquireTokenByAuthorizationGrantSupplier.java:63) at com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:69) at com.microsoft.aad.msal4j.AuthenticationResultSupplier.get(AuthenticationResultSupplier.java:18) at java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1604) at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java) at --- Async.Stack.Trace --- (captured by IntelliJ IDEA debugger) at java.util.concurrent.CompletableFuture$AsyncSupply.<init>(CompletableFuture.java:1590) at java.util.concurrent.CompletableFuture.asyncSupplyStage(CompletableFuture.java:1618) at java.util.concurrent.CompletableFuture.supplyAsync(CompletableFuture.java:1843) at com.microsoft.aad.msal4j.AbstractApplicationBase.executeRequest(AbstractApplicationBase.java:53) at com.microsoft.aad.msal4j.PublicClientApplication.acquireToken(PublicClientApplication.java:51) ... 78 more
JWT Payload
{
"aud": "036f55e4-0b6a-4a8c-a105-9e788d6f5dc1",
"iss": "https://login.microsoftonline.com/6701846e-693c-4a8e-93e5-9f5d3c5ee5b8/v2.0",
"iat": 1744357952,
"nbf": 1744357952,
"exp": 1744361852,
"name": "Sharepoint 測試管理员(测试Site)帳號",
"oid": "fa181c47-64fc-4530-9606-bfceb3c49724",
"preferred_username": "[email protected]",
"rh": "1.AWQAboQBZzxpjkqT5Z9dPF7luORVbwNqC4xKoQWeeI1vXcFkANlkAA.",
"sid": "003ebe99-ac74-2055-8c81-49ea0a5c3d2b",
"sub": "zYoayDbZ8gFQ9BUXrWUriwxqPhhEepzpOHZCqGkoA8Q",
"tid": "6701846e-693c-4a8e-93e5-9f5d3c5ee5b8",
"uti": "RaMVTbOekUaVMcHe-UC6AA",
"ver": "2.0"
}
Relevant code snippets
Expected behavior
No response
Identity provider
Microsoft Entra ID (Work and School accounts and Personal Microsoft accounts)
Regression
No response
Solution and workarounds
com.microsoft.aad.msal4j.TokenRequestExecutor#createAuthenticationResultFromOauthHttpResponse
change to :
-’,‘+’).replace('_', '/'), StandardCharsets.UTF_8);
The text was updated successfully, but these errors were encountered: