Android平台MSAL报错:Invalid JSON 'claims' value encountered如何解决?
Android平台使用MSAL遇到MsalServiceException错误求助
在Android平台使用MSAL(Microsoft Authentication Library)时,遇到了com.microsoft.identity.client.exception.MsalServiceException错误,具体异常栈如下:
com.microsoft.identity.common.java.exception.ServiceException: Invalid JSON 'claims' value encountered at com.microsoft.identity.common.java.controllers.ExceptionAdapter.exceptionFromAcquireTokenResult(ExceptionAdapter.java:96) at com.microsoft.identity.common.java.controllers.CommandDispatcher.getCommandResultFromTokenResult(CommandDispatcher.java:572) at com.microsoft.identity.common.java.controllers.CommandDispatcher.executeCommand(CommandDispatcher.java:480) at com.microsoft.identity.common.java.controllers.CommandDispatcher.access$100(CommandDispatcher.java:85) at com.microsoft.identity.common.java.controllers.CommandDispatcher$5.run(CommandDispatcher.java:648) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:920) Caused by: com.microsoft.identity.client.exception.MsalServiceException: Invalid JSON 'claims' value encountered at com.microsoft.identity.client.internal.controllers.MsalExceptionAdapter.msalExceptionFromBaseException(MsalExceptionAdapter.java:74) at com.microsoft.identity.client.SingleAccountPublicClientApplication$3.onError(SingleAccountPublicClientApplication.java:351) at com.microsoft.identity.client.SingleAccountPublicClientApplication$3.onError(SingleAccountPublicClientApplication.java:337) at com.microsoft.identity.common.java.controllers.CommandDispatcher.commandCallbackOnError(CommandDispatcher.java:534) at com.microsoft.identity.common.java.controllers.CommandDispatcher.access$1000(CommandDispatcher.java:85) at com.microsoft.identity.common.java.controllers.CommandDispatcher$4.run(CommandDispatcher.java:514) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8663) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
可能的解决方向
- 检查自定义claims的JSON格式:错误核心是“无效的JSON claims值”,需确保你传入的claims是严格符合JSON语法的字符串,比如引号闭合、键值对格式正确,无多余逗号或语法错误。示例正确格式:
{"id_token": {"email": {"essential": true}}} - 排查token请求中的claims参数:如果调用
acquireToken等方法时手动传入了claims参数,检查是否构造错误;若无需自定义claims,尝试移除该参数后重新请求。 - 升级MSAL版本:旧版本MSAL可能存在JSON解析缺陷,将依赖升级至最新稳定版,验证问题是否解决。
- 核对Azure AD应用配置:确认Azure AD应用注册中配置的claims规则是否正确,避免服务端返回异常格式的claims导致客户端解析失败。
内容的提问来源于stack exchange,提问作者dwh
相关产品推荐
相关产品推荐

