如何解决使用MSAL在Azure AD B2C Android中注销
我已使用Azure AD B2C
在移动应用程序中集成了MSAL library
。我已经为SignIn and SignUp
创建了用户流。身份验证成功后,我将获得访问令牌。因此,我在“活动页面”之一上的移动应用程序上设计了退出按钮,因此,一旦我在应用程序上设计了退出按钮,就需要从应用程序中获取用户signedOut
。那么我们如何在Android的AZURE AD B2C MSAL中进行SignOut
?
即使我清除了按我的偏好保存的访问令牌,也可以吗?还是有其他方法通过MSAL
库从Azure侧的Provideb登出?
解决方法
MSAL库提供a logout method,该清除器清除浏览器存储中的缓存,并将注销请求发送到Azure Active Directory(Azure AD)。将针对从B2C policy metadata获得的end_session_endpoint
URL进行请求。请记住single sign out is supported only by custom policies,它的作用域是同一浏览器,而不是设备。
对于本机Android移动应用程序,请使用Ms Document中的signout function
,要从缓存中删除该用户,必须为每个策略调用removeAccount()
。
PublicClientApplication publicClient = MyApplication.getInstance().getPublicClient();
User currentUser = Helpers.getUserByPolicy(publicClient.getUsers(),Constant.SIGN_UP_POLICY);
publicClient.remove(currentUser);
,
//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
)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。