Токен обновления не получен во время аутентификации MSAL ANDROID Azure AD B2C

#android #azure-ad-b2c #android-studio-3.0 #msal

#Android #azure-ad-b2c #android-studio-3.0 #msal

Вопрос:

Я интегрировал Azure AD B2C в свое приложение для Android с помощью MSAL , вход и регистрация работают должным образом. access token принимается только после успешной аутентификации. После успешной аутентификации не refresh Token получен. я использую значение области — https://icorg.onmicrosoft.com/ffc-60c4234-bf7aff196847/offline_access . в чем причина отсутствия Refresh Token ??

Комментарии:

1. Попробуйте указать область с offline_access вместо https://icorg.onmicrosoft.com/ffc-60c4234-bf7aff196847/offline_access .

2. @JoyWang — я пробовал с этим, теперь я не могу аутентифицироваться во время входа.

3. Вы запрашиваете токен с помощью своего собственного API? Если это так, попробуйте использовать пробел для их разделения, например https://icorg.onmicrosoft.com/ffc-60c4234-bf7aff196847/api/read offline_access .

4. @joy Wang — я использую библиотеку MSAL, поэтому после успешной аутентификации Azure libraray возвращает обратный вызов с AccessToken . но не refresh token получен.

5. Кажется, библиотека не предоставляет токен обновления — github.com/AzureAD/microsoft-authentication-library-for-android /…

Ответ №1:

MSAL не предоставляет токен обновления. Используйте трассировку сети, и вы увидите это в ответе, если область содержит offline_access , что будет по умолчанию, если вы укажете область, соответствующую вашему ресурсу.

Комментарии:

1. итак, как только срок действия токена доступа истек, я вызывал mSingleAccountApp.acquireTokenSilentAsync(getScopes( ), maccount.authority, getAuthSilentCallback( )); , поэтому при обратном вызове этого метода я получаю сообщение об ошибке messagecom.microsoft.identity.client.exception.MsalClientException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ как я могу управлять после истечения срока действия токена доступа в MSAL azure AD B2C?

2. Исходя из проблем с GitHub, ваша проблема заключается в том, что в метод молчаливого токена передается неправильный параметр. В результате в ответе отправляется HTML-страница, а не объект JSON. Подробно укажите в своем коде, что такое конфигурация MSAL и какие параметры вы передаете в acquireTokenSilent. Трассировка сети также помогла бы.

3. mSingleAccountApp.acquireTokenSilentAsync(getScopes( ), maccount.authority, getAuthSilentCallback( )); работает, если token срок действия не истек. но если access token истек срок действия, он выдает вышеупомянутую ошибку.

4. значение области действия равно — https://iocrg.onmicrosoft.com/ffcc-e64c-43b-aeed-bf7f196847/user.offline_access значение полномочий равно https://ibpocrg.b2clogin.com/54a1-b7b-488-9e03-36a891c19/v2.0/ . Это значения, передаваемые при вызове acquireTokenSilentAsync .

5. Ваши полномочия должны содержать идентификатор политики b2c.