#android #azure #azure-ad-b2c #msal
#Android #azure #azure-ad-b2c #msal
Вопрос:
я интегрировал Azure AD B2C
в свое мобильное приложение с помощью MSAL library
. Я создал пользовательские потоки для SignIn and SignUp
. Я получаю токен доступа после успешной аутентификации. итак, у меня есть кнопка выхода, разработанная в моем мобильном приложении на одной из моих страниц активности, поэтому, как только я нажимаю на кнопку выхода, разработанную в приложении, мне нужно получить пользователя signedOut
из приложения. итак, как мы можем сделать SignOut
в AZURE AD B2C MSAL на Android?
все ли в порядке, даже если я очищу маркер доступа, сохраненный в моих настройках? или есть какой-либо другой способ выхода из системы со стороны Azure, предоставляемый MSAL
библиотекой?
Ответ №1:
Библиотека MSAL предоставляет метод выхода, который очищает кэш в хранилище браузера и отправляет запрос на выход в Azure Active Directory (Azure AD). Запрос будет выполнен по end_session_endpoint
URL, полученному из метаданных политики B2C. Имейте в виду, что единый выход поддерживается только пользовательскими политиками и что он ограничен одним и тем же браузером, а не устройством.
Для собственного мобильного приложения Android, пожалуйста, используйте функцию выхода в Ms Document
Комментарии:
1. Кришна — В настоящее время это для собственных мобильных приложений, и это тоже реализовано с использованием MSAL для мобильных приложений. итак, как я смогу выйти из системы с моего мобильного устройства?
2. Кришна — Я полагаю, это для реализации на веб-стороне. В настоящее время я спрашивал о
signOut
процессе на родных устройствах Android изAZURE AD B2C MSAL
3. Привет @vinayak, пожалуйста, дайте мне знать, что мой обновленный ответ помогает.
4. Кришна — У меня все работало нормально. Я перешел по предоставленной вами ссылке.
Ответ №2:
Чтобы удалить этого пользователя из кэша, необходимо вызвать removeAccount()
для каждой политики.
PublicClientApplication publicClient = MyApplication.getInstance().getPublicClient();
User currentUser = Helpers.getUserByPolicy(publicClient.getUsers(), Constant.SIGN_UP_POLICY);
publicClient.remove(currentUser);
Ответ №3:
//Load account using publicClientApplication
private fun loadAccounts(mMultipleAccountApp: IMultipleAccountPublicClientApplication) {
mMultipleAccountApp.getAccounts(object: IPublicClientApplication.LoadAccountsCallback {
override fun onTaskCompleted(result: List<IAccount>) {
val accountList: List<IAccount> = result
removeAccounts(mMultipleAccountApp, accountList)
}
override fun onError(exception: MsalException) {
Log.d("Error",exception.message)
}
})
}
//call remove account
private fun removeAccounts(
mMultipleAccountApp: IMultipleAccountPublicClientApplication,
accountList: List<IAccount>
) {
val removeCallback =
object : IMultipleAccountPublicClientApplication.RemoveAccountCallback {
override fun onRemoved() {
// Redirect to login
}
override fun onError(exception: MsalException) {
Log.d("Error",exception.message)
}
}
B2CUser.signOutAsync(
accountList,
mMultipleAccountApp, removeCallback
)
}