MSAL выдает исключение MsalClientException при вызове MultipleAccountPublicClientApplication () - PullRequest
0 голосов
/ 28 мая 2020

PublicClientApplication.createMultipleAccountPublicClientApplication() вызывает исключение MsalClientException на некоторых Android устройствах. На некоторых устройствах все работает нормально.

Приложение корпоративного портала Intune установлено на всех устройствах и действует как приложение-брокер. Представление приложения брокера не отображается на устройствах, затронутых проблемой.

В чем может быть причина, по которой он работает на некоторых устройствах, а не на других, хотя все они используют одну и ту же базу кода и имеют одно и то же приложение-брокер?

  • Android Версия: 10
  • Протестированные версии MSAL: 1.0.1 и 1.5.1

Трассировка стека:

com.microsoft.identity.client.exception.MsalClientException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
at com.microsoft.identity.client.internal.controllers.MsalExceptionAdapter.msalExceptionFromBaseException(MsalExceptionAdapter.java:51)
at com.microsoft.identity.client.PublicClientApplication$2.onError(PublicClientApplication.java:873)
at com.microsoft.identity.client.PublicClientApplication$2.onError(PublicClientApplication.java:870)
at com.microsoft.identity.common.internal.controllers.CommandDispatcher$2.run(CommandDispatcher.java:176)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7860)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
Caused by: com.microsoft.identity.common.exception.ClientException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
at com.microsoft.identity.common.internal.controllers.ExceptionAdapter.baseExceptionFromException(ExceptionAdapter.java:252)
at com.microsoft.identity.common.internal.controllers.CommandDispatcher.executeCommand(CommandDispatcher.java:142)
at com.microsoft.identity.common.internal.controllers.CommandDispatcher.access$200(CommandDispatcher.java:52)
at com.microsoft.identity.common.internal.controllers.CommandDispatcher$1.run(CommandDispatcher.java:94)
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:919)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
at com.microsoft.identity.client.internal.controllers.BrokerMsalController$5.putValueInSuccessEvent(BrokerMsalController.java:412)
at com.microsoft.identity.client.internal.controllers.BrokerMsalController$5.putValueInSuccessEvent(BrokerMsalController.java:392)
at com.microsoft.identity.client.internal.controllers.BrokerMsalController.invokeBrokerOperation(BrokerMsalController.java:221)
at com.microsoft.identity.client.internal.controllers.BrokerMsalController.getDeviceMode(BrokerMsalController.java:391)
at com.microsoft.identity.common.internal.controllers.GetDeviceModeCommand.execute(GetDeviceModeCommand.java:44)
at com.microsoft.identity.common.internal.controllers.GetDeviceModeCommand.execute(GetDeviceModeCommand.java:33)
at com.microsoft.identity.common.internal.controllers.CommandDispatcher.executeCommand(CommandDispatcher.java:137)
… 5 more

Ответы [ 2 ]

0 голосов
/ 15 июня 2020

Отвечая на свой вопрос:

Проблема заключалась в наличии старой версии приложения корпоративного портала Intune на некоторых мобильных устройствах. После обновления до последней версии работает.

0 голосов
/ 29 мая 2020

Я не уверен, что это ваша проблема, но вот одна возможная причина: в документации говорится: Эта функция вернет объект MsalClientException, если он не сможет вернуть IMultipleAccountPublicClientApplication. Например, когда устройство помечено как 'совместно используемое' (PublicClientApplication # isSharedDevice () имеет значение true)

означает, что если устройство является устройством в режиме общего устройства, то вызов createmultiple ... завершится ошибкой с этим исключением msal ... чтобы проверить, является ли это общим устройством, согласно здесь https://docs.microsoft.com/en-ca/azure/active-directory/develop/tutorial-v2-shared-device-mode#set -up-an- android -device-in-shared-mode , вы можете проверить через azure портал

это вполне может быть не ваша проблема, а просто мысль / что-то, что нужно проверить.

...