Почему Google TEX аутентификации refre sh в последнее время не работает в Azure Mobile Apps SDK для Android - PullRequest
0 голосов
/ 11 января 2020

У меня есть приложение android, реализующее azure mobile SDK (com. Microsoft. azure: azure -mobile- android: 3.5. 1@aar). В моем приложении я использую аутентификацию Google метод с refre sh токенами (как описано в Azure документации по мобильным приложениям ). Аутентификация работала нормально в течение почти 2 лет. В течение последних 10 дней (без изменений) мои пользователи больше не могут обновлять sh свои токены авторизации, если последний повторный sh был сделан через 60 минут или более go. Refre sh завершается успешно, только если он вызывается раньше, чем через 1 час. Если refre sh не удается, как это часто бывает, я должен заставить пользователя снова войти в систему с помощью экрана согласия Google, чтобы получить новый токен. Этого не было раньше, так как токены могли обновляться даже через несколько дней после последнего обновления sh. Что может быть не так? Мой Azure План обслуживания имеет тип D1: Общий.

Пользователи видят это сообщение об ошибке на своем устройстве android, если метод refreshUser () вызывается более чем через 1 час после последнего обновления sh :

Refre аутентификации Google sh не удалось. Ссылка sh завершилась с 401 несанкционированной ошибкой. Учетные данные больше не действительны.

В потоке журналов (на портале. azure) я вижу следующее сообщение:

Ошибка HTTP 401.83 - Несанкционировано. У вас нет прав для просмотра этого каталога. или page.Скорее всего, причина: у прошедшего проверку пользователя нет доступа к ресурсу, необходимому для обработки запроса. Можно попробовать следующее: создать правило трассировки для отслеживания неудачных запросов для этого кода состояния HTTP.

Это мой метод аутентификации:

private void authenticate() {
// Sign in using the Google provider.
HashMap parameters = new HashMap<>();
parameters.put("access_type", "offline");
parameters.put("prompt", "consent");
mClient.login(MobileServiceAuthenticationProvider.Google, url_scheme_of_your_app, GOOGLE_LOGIN_REQUEST_CODE, parameters); 
}

Это мой метод refre sh в соответствии с документацией для мобильных приложений:

private void refreshToken(){mClient.refreshUser(new UserAuthenticationCallback() {
    @Override
    public void onCompleted(MobileServiceUser user, Exception exception, ServiceFilterResponse response) {
    if (user != null && exception == null) {
    /*refresh succeeded*/
    } else { 
    /*refresh failed*/
    String message = "+"%s authentication refresh failed.Error: %s", "Google",exception.getMessage())";}}}); }

Настройки аутентификации в портале Azure: enter image description here

1 Ответ

0 голосов
/ 27 января 2020

Похоже, что функция аутентификации / авторизации службы приложений Azure имела регрессию в значении по умолчанию для refken sh (раньше было 72 часа, сейчас оно не устанавливается, поэтому по умолчанию оно равно 1 час). Мы исправим это в следующем выпуске (следующие несколько недель).

Тем временем вы можете вручную настроить это значение с помощью следующих шагов:

  1. Перейдите к https://resources.azure.com

  2. Перейдите к подпискам> (subName)> resourceGroups> (resourceGroupName)> провайдеры> Microsoft.Web> sites> (siteName)> config> authSettings .

  3. Нажмите, чтобы отредактировать

  4. Установите для "tokenRefreshExtensionHours" значение 72.

  5. Нажмите PUT

Это должно восстановить старое поведение и будет работать, даже если мы вернем значение по умолчанию на 72 часа.

...