AzureAD/azure-activedirectory-library-for-android

Acquire Token occasionally returns "No User provided and multiple MRRTs exist for the given client id"

chrisetler opened this issue · 5 comments

  • Expected behavior
    Calls to acquireToken should either succeed or fail consistently.

  • Actual behavior
    Sometimes, calls to acquire token fail with "No User provided and multiple MRRTs exist for the given client id" in the onError callback, but will succeed if immediately retried.

  • Steps to reproduce the problem
    Create an app that calls either acquireToken(activity, resource, clientId, redirectUri, promptBehavior, mCallback) or acquireToken(resource, clientId, redirectUri, null, promptBehavior, null, mCallback). Try waiting some time and restart the app. Sometimes it will fail with the above error. But if acquire token is immediately called again, it will succeed.

  • Specifications like the version of the library, operating system etc.
    Version 1.15.1

  • Exception details

This is the exception sent back in the onError callback of acquire token:
image

  • ADAL Log
CacheKeyValueDelegate  [2019-07-02 15:10:37 - {"thread_id":"2","correlation_id":"UNSET"}] Init: CacheKeyValueDelegate Android 28
     additional: null
    errorCode null
SharedPreferencesFileManager  [2019-07-02 15:10:37 - {"thread_id":"2","correlation_id":"UNSET"}] Init with storage helper:  SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
AccountCredentialCache  [2019-07-02 15:10:37 - {"thread_id":"2","correlation_id":"UNSET"}] Init: AccountCredentialCache Android 28
     additional: null
    errorCode null
MsalOAuth2TokenCache  [2019-07-02 15:10:37 - {"thread_id":"2","correlation_id":"UNSET"}] Init: MsalOAuth2TokenCache Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:10:37 - {"thread_id":"2","correlation_id":"UNSET"}] Init: ADALOAuth2TokenCache Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:10:37 - {"thread_id":"2","correlation_id":"UNSET"}] Context is an Application? [true] Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:10:37 - {"thread_id":"2","correlation_id":"UNSET"}] Validating secret key settings. Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:10:37 - {"thread_id":"2","correlation_id":"UNSET"}] Initializing SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
SharedPreferencesFileManager  [2019-07-02 15:10:37 - {"thread_id":"2","correlation_id":"UNSET"}] Init with storage helper:  SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
AcquireTokenRequest:acquireToken  [2019-07-02 15:10:37 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] Sending async task from thread:27385 ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:acquireToken  [2019-07-02 15:10:37 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] Running task in thread:27466 ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:validateAuthority  [2019-07-02 15:10:37 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] Start validating authority ver:1.15.1 Android 28
     additional: null
    errorCode null
Discovery  [2019-07-02 15:10:37 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] Sending discovery request to query url.  ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:validateAuthority  [2019-07-02 15:10:38 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] The passed in authority is valid. ver:1.15.1 Android 28
     additional: null
    errorCode null
BrokerProxy:canSwitchToBroker  [2019-07-02 15:10:38 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] Broker auth is turned off or no valid broker is available on the device, cannot switch to broker. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilent  [2019-07-02 15:10:38 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] Try to acquire token silently, return valid AT or use RT in the cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
BrokerProxy:canSwitchToBroker  [2019-07-02 15:10:38 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] Broker auth is turned off or no valid broker is available on the device, cannot switch to broker. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilentLocally  [2019-07-02 15:10:38 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] Try to silently get token from local cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
DefaultTokenCacheStore  [2019-07-02 15:10:38 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] Started to initialize storage helper ver:1.15.1 Android 28
     additional: null
    errorCode null
DefaultTokenCacheStore  [2019-07-02 15:10:38 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] Finished to initialize storage helper ver:1.15.1 Android 28
     additional: null
    errorCode null
2019-07-02 11:10:38.228 27385-27466/com.***** W/KeyStore: KeyStore exception
    android.os.ServiceSpecificException:  (code 7)
        at android.os.Parcel.createException(Parcel.java:1956)
        at android.os.Parcel.readException(Parcel.java:1910)
        at android.os.Parcel.readException(Parcel.java:1860)
        at android.security.IKeystoreService$Stub$Proxy.get(IKeystoreService.java:786)
        at android.security.KeyStore.get(KeyStore.java:195)
        at android.security.keystore.AndroidKeyStoreSpi.engineGetCertificateChain(AndroidKeyStoreSpi.java:118)
        at java.security.KeyStoreSpi.engineGetEntry(KeyStoreSpi.java:484)
        at java.security.KeyStore.getEntry(KeyStore.java:1560)
        at com.microsoft.identity.common.adal.internal.cache.StorageHelper.readKeyPair(StorageHelper.java:418)
        at com.microsoft.identity.common.adal.internal.cache.StorageHelper.getKey(StorageHelper.java:363)
        at com.microsoft.identity.common.adal.internal.cache.StorageHelper.decrypt(StorageHelper.java:250)
        at com.microsoft.aad.adal.DefaultTokenCacheStore.decrypt(DefaultTokenCacheStore.java:145)
        at com.microsoft.aad.adal.DefaultTokenCacheStore.getItem(DefaultTokenCacheStore.java:163)
        at com.microsoft.aad.adal.TokenCacheAccessor.getRegularRefreshTokenCacheItem(TokenCacheAccessor.java:175)
        at com.microsoft.aad.adal.TokenCacheAccessor.getATFromCache(TokenCacheAccessor.java:138)
        at com.microsoft.aad.adal.AcquireTokenSilentHandler.getAccessToken(AcquireTokenSilentHandler.java:108)
        at com.microsoft.aad.adal.AcquireTokenRequest.tryAcquireTokenSilentLocally(AcquireTokenRequest.java:459)
        at com.microsoft.aad.adal.AcquireTokenRequest.acquireTokenSilentFlow(AcquireTokenRequest.java:435)
        at com.microsoft.aad.adal.AcquireTokenRequest.tryAcquireTokenSilent(AcquireTokenRequest.java:367)
        at com.microsoft.aad.adal.AcquireTokenRequest.performAcquireTokenRequest(AcquireTokenRequest.java:346)
        at com.microsoft.aad.adal.AcquireTokenRequest.access$200(AcquireTokenRequest.java:53)
        at com.microsoft.aad.adal.AcquireTokenRequest$1.run(AcquireTokenRequest.java:123)
        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:764)
TokenCacheItem  [2019-07-02 15:10:38 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] Check token expiration time. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenSilentHandler:getAccessToken  [2019-07-02 15:10:38 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] Return AT from cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilent  [2019-07-02 15:10:38 - 3031b01e-379e-4ace-b8e0-c1118e3b983b] Token is successfully returned from silent flow.  ver:1.15.1 Android 28
     additional: null
    errorCode null
CacheKeyValueDelegate  [2019-07-02 15:11:05 - {"thread_id":"2","correlation_id":"UNSET"}] Init: CacheKeyValueDelegate Android 28
     additional: null
    errorCode null
SharedPreferencesFileManager  [2019-07-02 15:11:05 - {"thread_id":"2","correlation_id":"UNSET"}] Init with storage helper:  SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
AccountCredentialCache  [2019-07-02 15:11:05 - {"thread_id":"2","correlation_id":"UNSET"}] Init: AccountCredentialCache Android 28
     additional: null
    errorCode null
MsalOAuth2TokenCache  [2019-07-02 15:11:05 - {"thread_id":"2","correlation_id":"UNSET"}] Init: MsalOAuth2TokenCache Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:05 - {"thread_id":"2","correlation_id":"UNSET"}] Init: ADALOAuth2TokenCache Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:05 - {"thread_id":"2","correlation_id":"UNSET"}] Context is an Application? [true] Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:05 - {"thread_id":"2","correlation_id":"UNSET"}] Validating secret key settings. Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:05 - {"thread_id":"2","correlation_id":"UNSET"}] Initializing SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
SharedPreferencesFileManager  [2019-07-02 15:11:05 - {"thread_id":"2","correlation_id":"UNSET"}] Init with storage helper:  SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
AcquireTokenRequest:acquireToken  [2019-07-02 15:11:05 - 491832f2-366c-465d-93b0-28a69df4f9e4] Sending async task from thread:27554 ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:acquireToken  [2019-07-02 15:11:05 - 491832f2-366c-465d-93b0-28a69df4f9e4] Running task in thread:27636 ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:validateAuthority  [2019-07-02 15:11:05 - 491832f2-366c-465d-93b0-28a69df4f9e4] Start validating authority ver:1.15.1 Android 28
     additional: null
    errorCode null
Discovery  [2019-07-02 15:11:05 - 491832f2-366c-465d-93b0-28a69df4f9e4] Sending discovery request to query url.  ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:validateAuthority  [2019-07-02 15:11:06 - 491832f2-366c-465d-93b0-28a69df4f9e4] The passed in authority is valid. ver:1.15.1 Android 28
     additional: null
    errorCode null
BrokerProxy:canSwitchToBroker  [2019-07-02 15:11:06 - 491832f2-366c-465d-93b0-28a69df4f9e4] Broker auth is turned off or no valid broker is available on the device, cannot switch to broker. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilent  [2019-07-02 15:11:06 - 491832f2-366c-465d-93b0-28a69df4f9e4] Try to acquire token silently, return valid AT or use RT in the cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
BrokerProxy:canSwitchToBroker  [2019-07-02 15:11:06 - 491832f2-366c-465d-93b0-28a69df4f9e4] Broker auth is turned off or no valid broker is available on the device, cannot switch to broker. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilentLocally  [2019-07-02 15:11:06 - 491832f2-366c-465d-93b0-28a69df4f9e4] Try to silently get token from local cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
DefaultTokenCacheStore  [2019-07-02 15:11:06 - 491832f2-366c-465d-93b0-28a69df4f9e4] Started to initialize storage helper ver:1.15.1 Android 28
     additional: null
    errorCode null
DefaultTokenCacheStore  [2019-07-02 15:11:06 - 491832f2-366c-465d-93b0-28a69df4f9e4] Finished to initialize storage helper ver:1.15.1 Android 28
     additional: null
    errorCode null
2019-07-02 11:11:06.478 27554-27636/com.***** W/KeyStore: KeyStore exception
    android.os.ServiceSpecificException:  (code 7)
        at android.os.Parcel.createException(Parcel.java:1956)
        at android.os.Parcel.readException(Parcel.java:1910)
        at android.os.Parcel.readException(Parcel.java:1860)
        at android.security.IKeystoreService$Stub$Proxy.get(IKeystoreService.java:786)
        at android.security.KeyStore.get(KeyStore.java:195)
        at android.security.keystore.AndroidKeyStoreSpi.engineGetCertificateChain(AndroidKeyStoreSpi.java:118)
        at java.security.KeyStoreSpi.engineGetEntry(KeyStoreSpi.java:484)
        at java.security.KeyStore.getEntry(KeyStore.java:1560)
        at com.microsoft.identity.common.adal.internal.cache.StorageHelper.readKeyPair(StorageHelper.java:418)
        at com.microsoft.identity.common.adal.internal.cache.StorageHelper.getKey(StorageHelper.java:363)
        at com.microsoft.identity.common.adal.internal.cache.StorageHelper.decrypt(StorageHelper.java:250)
        at com.microsoft.aad.adal.DefaultTokenCacheStore.decrypt(DefaultTokenCacheStore.java:145)
        at com.microsoft.aad.adal.DefaultTokenCacheStore.getItem(DefaultTokenCacheStore.java:163)
        at com.microsoft.aad.adal.TokenCacheAccessor.getRegularRefreshTokenCacheItem(TokenCacheAccessor.java:175)
        at com.microsoft.aad.adal.TokenCacheAccessor.getATFromCache(TokenCacheAccessor.java:138)
        at com.microsoft.aad.adal.AcquireTokenSilentHandler.getAccessToken(AcquireTokenSilentHandler.java:108)
        at com.microsoft.aad.adal.AcquireTokenRequest.tryAcquireTokenSilentLocally(AcquireTokenRequest.java:459)
        at com.microsoft.aad.adal.AcquireTokenRequest.acquireTokenSilentFlow(AcquireTokenRequest.java:435)
        at com.microsoft.aad.adal.AcquireTokenRequest.tryAcquireTokenSilent(AcquireTokenRequest.java:367)
        at com.microsoft.aad.adal.AcquireTokenRequest.performAcquireTokenRequest(AcquireTokenRequest.java:346)
        at com.microsoft.aad.adal.AcquireTokenRequest.access$200(AcquireTokenRequest.java:53)
        at com.microsoft.aad.adal.AcquireTokenRequest$1.run(AcquireTokenRequest.java:123)
        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:764)
TokenCacheItem  [2019-07-02 15:11:06 - 491832f2-366c-465d-93b0-28a69df4f9e4] Check token expiration time. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenSilentHandler:getAccessToken  [2019-07-02 15:11:06 - 491832f2-366c-465d-93b0-28a69df4f9e4] Return AT from cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilent  [2019-07-02 15:11:06 - 491832f2-366c-465d-93b0-28a69df4f9e4] Token is successfully returned from silent flow.  ver:1.15.1 Android 28
     additional: null
    errorCode null
CacheKeyValueDelegate  [2019-07-02 15:11:18 - {"thread_id":"2","correlation_id":"491832f2-366c-465d-93b0-28a69df4f9e4"}] Init: CacheKeyValueDelegate Android 28
     additional: null
    errorCode null
SharedPreferencesFileManager  [2019-07-02 15:11:18 - {"thread_id":"2","correlation_id":"491832f2-366c-465d-93b0-28a69df4f9e4"}] Init with storage helper:  SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
AccountCredentialCache  [2019-07-02 15:11:18 - {"thread_id":"2","correlation_id":"491832f2-366c-465d-93b0-28a69df4f9e4"}] Init: AccountCredentialCache Android 28
     additional: null
    errorCode null
MsalOAuth2TokenCache  [2019-07-02 15:11:18 - {"thread_id":"2","correlation_id":"491832f2-366c-465d-93b0-28a69df4f9e4"}] Init: MsalOAuth2TokenCache Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:18 - {"thread_id":"2","correlation_id":"491832f2-366c-465d-93b0-28a69df4f9e4"}] Init: ADALOAuth2TokenCache Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:18 - {"thread_id":"2","correlation_id":"491832f2-366c-465d-93b0-28a69df4f9e4"}] Context is an Application? [true] Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:18 - {"thread_id":"2","correlation_id":"491832f2-366c-465d-93b0-28a69df4f9e4"}] Validating secret key settings. Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:18 - {"thread_id":"2","correlation_id":"491832f2-366c-465d-93b0-28a69df4f9e4"}] Initializing SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
SharedPreferencesFileManager  [2019-07-02 15:11:18 - {"thread_id":"2","correlation_id":"491832f2-366c-465d-93b0-28a69df4f9e4"}] Init with storage helper:  SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
AcquireTokenRequest:acquireToken  [2019-07-02 15:11:18 - 949eaec0-202a-49d2-93af-845ede1f413c] Sending async task from thread:27554 ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:acquireToken  [2019-07-02 15:11:18 - 949eaec0-202a-49d2-93af-845ede1f413c] Running task in thread:27636 ver:1.15.1 Android 28
     additional: null
    errorCode null
BrokerProxy:canSwitchToBroker  [2019-07-02 15:11:18 - 949eaec0-202a-49d2-93af-845ede1f413c] Broker auth is turned off or no valid broker is available on the device, cannot switch to broker. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilent  [2019-07-02 15:11:18 - 949eaec0-202a-49d2-93af-845ede1f413c] Try to acquire token silently, return valid AT or use RT in the cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
BrokerProxy:canSwitchToBroker  [2019-07-02 15:11:18 - 949eaec0-202a-49d2-93af-845ede1f413c] Broker auth is turned off or no valid broker is available on the device, cannot switch to broker. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilentLocally  [2019-07-02 15:11:18 - 949eaec0-202a-49d2-93af-845ede1f413c] Try to silently get token from local cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
TokenCacheItem  [2019-07-02 15:11:21 - 949eaec0-202a-49d2-93af-845ede1f413c] Check token expiration time. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenSilentHandler:getAccessToken  [2019-07-02 15:11:21 - 949eaec0-202a-49d2-93af-845ede1f413c] Return AT from cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilent  [2019-07-02 15:11:21 - 949eaec0-202a-49d2-93af-845ede1f413c] Token is successfully returned from silent flow.  ver:1.15.1 Android 28
     additional: null
    errorCode null
CacheKeyValueDelegate  [2019-07-02 15:11:35 - {"thread_id":"2","correlation_id":"UNSET"}] Init: CacheKeyValueDelegate Android 28
     additional: null
    errorCode null
SharedPreferencesFileManager  [2019-07-02 15:11:35 - {"thread_id":"2","correlation_id":"UNSET"}] Init with storage helper:  SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
AccountCredentialCache  [2019-07-02 15:11:35 - {"thread_id":"2","correlation_id":"UNSET"}] Init: AccountCredentialCache Android 28
     additional: null
    errorCode null
MsalOAuth2TokenCache  [2019-07-02 15:11:35 - {"thread_id":"2","correlation_id":"UNSET"}] Init: MsalOAuth2TokenCache Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:35 - {"thread_id":"2","correlation_id":"UNSET"}] Init: ADALOAuth2TokenCache Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:35 - {"thread_id":"2","correlation_id":"UNSET"}] Context is an Application? [true] Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:35 - {"thread_id":"2","correlation_id":"UNSET"}] Validating secret key settings. Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:35 - {"thread_id":"2","correlation_id":"UNSET"}] Initializing SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
SharedPreferencesFileManager  [2019-07-02 15:11:35 - {"thread_id":"2","correlation_id":"UNSET"}] Init with storage helper:  SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
AcquireTokenRequest:acquireToken  [2019-07-02 15:11:35 - 527a9149-09dd-4e08-b1ba-27d746425f22] Sending async task from thread:27721 ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:acquireToken  [2019-07-02 15:11:35 - 527a9149-09dd-4e08-b1ba-27d746425f22] Running task in thread:27819 ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:validateAuthority  [2019-07-02 15:11:35 - 527a9149-09dd-4e08-b1ba-27d746425f22] Start validating authority ver:1.15.1 Android 28
     additional: null
    errorCode null
Discovery  [2019-07-02 15:11:35 - 527a9149-09dd-4e08-b1ba-27d746425f22] Sending discovery request to query url.  ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:validateAuthority  [2019-07-02 15:11:36 - 527a9149-09dd-4e08-b1ba-27d746425f22] The passed in authority is valid. ver:1.15.1 Android 28
     additional: null
    errorCode null
BrokerProxy:canSwitchToBroker  [2019-07-02 15:11:36 - 527a9149-09dd-4e08-b1ba-27d746425f22] Broker auth is turned off or no valid broker is available on the device, cannot switch to broker. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilent  [2019-07-02 15:11:36 - 527a9149-09dd-4e08-b1ba-27d746425f22] Try to acquire token silently, return valid AT or use RT in the cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
BrokerProxy:canSwitchToBroker  [2019-07-02 15:11:36 - 527a9149-09dd-4e08-b1ba-27d746425f22] Broker auth is turned off or no valid broker is available on the device, cannot switch to broker. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilentLocally  [2019-07-02 15:11:36 - 527a9149-09dd-4e08-b1ba-27d746425f22] Try to silently get token from local cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
DefaultTokenCacheStore  [2019-07-02 15:11:36 - 527a9149-09dd-4e08-b1ba-27d746425f22] Started to initialize storage helper ver:1.15.1 Android 28
     additional: null
    errorCode null
DefaultTokenCacheStore  [2019-07-02 15:11:36 - 527a9149-09dd-4e08-b1ba-27d746425f22] Finished to initialize storage helper ver:1.15.1 Android 28
     additional: null
    errorCode null
2019-07-02 11:11:36.309 27721-27819/com.*****W/KeyStore: KeyStore exception
    android.os.ServiceSpecificException:  (code 7)
        at android.os.Parcel.createException(Parcel.java:1956)
        at android.os.Parcel.readException(Parcel.java:1910)
        at android.os.Parcel.readException(Parcel.java:1860)
        at android.security.IKeystoreService$Stub$Proxy.get(IKeystoreService.java:786)
        at android.security.KeyStore.get(KeyStore.java:195)
        at android.security.keystore.AndroidKeyStoreSpi.engineGetCertificateChain(AndroidKeyStoreSpi.java:118)
        at java.security.KeyStoreSpi.engineGetEntry(KeyStoreSpi.java:484)
        at java.security.KeyStore.getEntry(KeyStore.java:1560)
        at com.microsoft.identity.common.adal.internal.cache.StorageHelper.readKeyPair(StorageHelper.java:418)
        at com.microsoft.identity.common.adal.internal.cache.StorageHelper.getKey(StorageHelper.java:363)
        at com.microsoft.identity.common.adal.internal.cache.StorageHelper.decrypt(StorageHelper.java:250)
        at com.microsoft.aad.adal.DefaultTokenCacheStore.decrypt(DefaultTokenCacheStore.java:145)
        at com.microsoft.aad.adal.DefaultTokenCacheStore.getItem(DefaultTokenCacheStore.java:163)
        at com.microsoft.aad.adal.TokenCacheAccessor.getRegularRefreshTokenCacheItem(TokenCacheAccessor.java:175)
        at com.microsoft.aad.adal.TokenCacheAccessor.getATFromCache(TokenCacheAccessor.java:138)
        at com.microsoft.aad.adal.AcquireTokenSilentHandler.getAccessToken(AcquireTokenSilentHandler.java:108)
        at com.microsoft.aad.adal.AcquireTokenRequest.tryAcquireTokenSilentLocally(AcquireTokenRequest.java:459)
        at com.microsoft.aad.adal.AcquireTokenRequest.acquireTokenSilentFlow(AcquireTokenRequest.java:435)
        at com.microsoft.aad.adal.AcquireTokenRequest.tryAcquireTokenSilent(AcquireTokenRequest.java:367)
        at com.microsoft.aad.adal.AcquireTokenRequest.performAcquireTokenRequest(AcquireTokenRequest.java:346)
        at com.microsoft.aad.adal.AcquireTokenRequest.access$200(AcquireTokenRequest.java:53)
        at com.microsoft.aad.adal.AcquireTokenRequest$1.run(AcquireTokenRequest.java:123)
        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:764)
TokenCacheItem  [2019-07-02 15:11:36 - 527a9149-09dd-4e08-b1ba-27d746425f22] Check token expiration time. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenSilentHandler:getAccessToken  [2019-07-02 15:11:36 - 527a9149-09dd-4e08-b1ba-27d746425f22] Return AT from cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilent  [2019-07-02 15:11:36 - 527a9149-09dd-4e08-b1ba-27d746425f22] Token is successfully returned from silent flow.  ver:1.15.1 Android 28
     additional: null
    errorCode null
CacheKeyValueDelegate  [2019-07-02 15:11:42 - {"thread_id":"2","correlation_id":"527a9149-09dd-4e08-b1ba-27d746425f22"}] Init: CacheKeyValueDelegate Android 28
     additional: null
    errorCode null
SharedPreferencesFileManager  [2019-07-02 15:11:42 - {"thread_id":"2","correlation_id":"527a9149-09dd-4e08-b1ba-27d746425f22"}] Init with storage helper:  SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
AccountCredentialCache  [2019-07-02 15:11:42 - {"thread_id":"2","correlation_id":"527a9149-09dd-4e08-b1ba-27d746425f22"}] Init: AccountCredentialCache Android 28
     additional: null
    errorCode null
MsalOAuth2TokenCache  [2019-07-02 15:11:42 - {"thread_id":"2","correlation_id":"527a9149-09dd-4e08-b1ba-27d746425f22"}] Init: MsalOAuth2TokenCache Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:42 - {"thread_id":"2","correlation_id":"527a9149-09dd-4e08-b1ba-27d746425f22"}] Init: ADALOAuth2TokenCache Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:42 - {"thread_id":"2","correlation_id":"527a9149-09dd-4e08-b1ba-27d746425f22"}] Context is an Application? [true] Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:42 - {"thread_id":"2","correlation_id":"527a9149-09dd-4e08-b1ba-27d746425f22"}] Validating secret key settings. Android 28
     additional: null
    errorCode null
ADALOAuth2TokenCache  [2019-07-02 15:11:42 - {"thread_id":"2","correlation_id":"527a9149-09dd-4e08-b1ba-27d746425f22"}] Initializing SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
SharedPreferencesFileManager  [2019-07-02 15:11:42 - {"thread_id":"2","correlation_id":"527a9149-09dd-4e08-b1ba-27d746425f22"}] Init with storage helper:  SharedPreferencesFileManager Android 28
     additional: null
    errorCode null
AcquireTokenRequest:acquireToken  [2019-07-02 15:11:42 - c26dd288-0823-4f0c-8142-49dbab527be0] Sending async task from thread:27721 ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:acquireToken  [2019-07-02 15:11:42 - c26dd288-0823-4f0c-8142-49dbab527be0] Running task in thread:27819 ver:1.15.1 Android 28
     additional: null
    errorCode null
BrokerProxy:canSwitchToBroker  [2019-07-02 15:11:42 - c26dd288-0823-4f0c-8142-49dbab527be0] Broker auth is turned off or no valid broker is available on the device, cannot switch to broker. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilent  [2019-07-02 15:11:42 - c26dd288-0823-4f0c-8142-49dbab527be0] Try to acquire token silently, return valid AT or use RT in the cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
BrokerProxy:canSwitchToBroker  [2019-07-02 15:11:42 - c26dd288-0823-4f0c-8142-49dbab527be0] Broker auth is turned off or no valid broker is available on the device, cannot switch to broker. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilentLocally  [2019-07-02 15:11:42 - c26dd288-0823-4f0c-8142-49dbab527be0] Try to silently get token from local cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
TokenCacheItem  [2019-07-02 15:11:42 - c26dd288-0823-4f0c-8142-49dbab527be0] Check token expiration time. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenSilentHandler:getAccessToken  [2019-07-02 15:11:42 - c26dd288-0823-4f0c-8142-49dbab527be0] Return AT from cache. ver:1.15.1 Android 28
     additional: null
    errorCode null
AcquireTokenRequest:tryAcquireTokenSilent  [2019-07-02 15:11:42 - c26dd288-0823-4f0c-8142-49dbab527be0] Token is successfully returned from silent flow.  ver:1.15.1 Android 28
     additional: null
    errorCode null

@iambmelt do you have an update on this issue? Has it been fixed and if so, when will it be released? thx.

@jennyf19 - No specific root cause for this issue has been identified. I suspect it is due to misbehavior on select devices pertaining to KeyStore.

We recently accepted a fix to update the APIs we're using around KeyStore in AzureAD/microsoft-authentication-library-common-for-android#533 -- these changes have merged but have not yet been deployed. I don't know yet for certain what version number will be chosen but expect them to arrive in our next release: 1.16.4 or later

@iambmelt What's the latest status here? Should this be closed?

@hamiltonha Let's get feedback from @chrisetler

For the general case, this is a usage issue: the error being triggered is No User provided and multiple MRRTs exist for the given client id -- this a check thrown by logic added in #836 when ambiguous acquireTokenSilent calls are made. The solution is to provide a userid in the request.

@chrisetler Can you confirm the above unblocks/unblocked you?

For other warning issued in the logs concerning KeyStore, this change has not yet shipped but should not be a blocker. The KeyStore update mentioned in AzureAD/microsoft-authentication-library-common-for-android#533 has merged to dev but was not deployed in our Adal@1.16.3-hf1+Common@0.0.10-hf1 release. That issue is tracked separately here and cannot yet close. Once an updated 1.16.4 or higher ships, that issue can be closed.

Closing due to inactivity