Проблема с выходом из Microsoft Active Directory SDK для Android

Я использую Microsoft Azure Active Directory SDK для аутентификации в своем приложении для Android. Реализация SignIn & Graph API работает нормально. Но когда я вызываю метод выхода SDK. Он выходит из приложения. Но когда я снова нажал «Войти», он открывает оверлей браузера для входа в систему. Там страница Microsoft показывает мне мою последнюю учетную запись в качестве элемента для выбора. Как только я нажал на элемент, он позволяет мне войти в приложение, не спрашивая пароль снова.

Таким образом, Microsoft не очищает экземпляр учетной записи пользователя в браузере, который открывается с помощью SDK. Я попытался очистить файлы cookie и кэш в методе обратного вызова выхода. но пока нет успеха.

Кто-нибудь сталкивался с такой проблемой раньше? За несколько дней до этого я столкнулся с такой проблемой и с OKta Authentication. Это также была открытая накладка браузера для входа в систему.




Ответы (2)


Вот ветка обсуждает что-то подобное. И, вероятно, то, с чем вы сталкиваетесь. https://github.com/Azure-Samples/active-directory-xamarin-native-v2/issues/86 Главным образом то, что вы можете очистить кэш токенов для встроенного браузера, но не для браузера Chrome. и это своего рода дизайн.

в основном вы выходите из своего приложения, а не из лазурной рекламы. если есть другие приложения, сайты или учетные записи электронной почты, использующие тот же логин, то вы выкинете их всех, что не всегда хорошо. В потоке есть упоминание о чем-то подобном, но с входом в Google: Как выйти из приложения, в котором я использовал OAuth2 для входа в Google? это дает вам быстрый и грязный пример того, как выйти из authprovider, в основном вызывая выход из конечной точки. вам придется сделать что-то подобное, если вы хотите сделать это для лазури.

person alphaz18    schedule 11.07.2020

Это сработало для меня,

Очистите файлы cookie и общие настройки, а также Очистить файлы cookie браузера после выхода из системы

private fun logoutFromMS(){
        // Clear Microsoft pref
        requireActivity()
            .applicationContext
            .getSharedPreferences("com.microsoft.aad.adal.cache", 0)
            .edit()
            .clear()
            .apply()

        requireActivity()
            .applicationContext
            .getSharedPreferences("WebViewChromiumPrefs", 0)
            .edit()
            .clear()
            .apply()

        val cookieManager: CookieManager =
            CookieManager.getInstance()
        cookieManager.removeAllCookies { data ->
            Timber.d("DATA:removeAllCookies: $data")
        }

        cookieManager.removeSessionCookies { data ->
            Timber.d("DATA:removeSessionCookies: $data")
        }
        cookieManager.flush()
    }
person Livin    schedule 12.07.2021