使用 MSAL 在 Azure AD B2C Android 中注销
Logout in Azure AD B2C Android using MSAL
我已经使用 MSAL library
在我的移动应用程序上集成了 Azure AD B2C
。我已经为 SignIn and SignUp
创建了用户流。身份验证成功后,我将获得访问令牌。所以我在我的Activity页面之一的移动应用程序上设计了我的注销按钮,所以一旦我点击在应用程序上设计的注销按钮,我需要从应用程序中获取用户signedOut
。那么我们如何在 Android 上在 AZURE AD B2C MSAL 中执行 SignOut
?
即使我清除了我偏好保存的访问令牌也可以吗?或者是否有任何其他方法可以通过 MSAL
库从 Azure 端注销?
MSAL 库提供 a logout method that clears the cache in browser storage and sends a sign-out request to Azure Active Directory (Azure AD). Request will be done against the end_session_endpoint
URL obtained from the B2C policy metadata. Keep in mind single sign out is supported only by custom policies 并且它适用于同一浏览器,而不适用于设备。
对于本机 Android 移动应用程序,请使用 Ms 文档中的 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
)
}
我已经使用 MSAL library
在我的移动应用程序上集成了 Azure AD B2C
。我已经为 SignIn and SignUp
创建了用户流。身份验证成功后,我将获得访问令牌。所以我在我的Activity页面之一的移动应用程序上设计了我的注销按钮,所以一旦我点击在应用程序上设计的注销按钮,我需要从应用程序中获取用户signedOut
。那么我们如何在 Android 上在 AZURE AD B2C MSAL 中执行 SignOut
?
即使我清除了我偏好保存的访问令牌也可以吗?或者是否有任何其他方法可以通过 MSAL
库从 Azure 端注销?
MSAL 库提供 a logout method that clears the cache in browser storage and sends a sign-out request to Azure Active Directory (Azure AD). Request will be done against the end_session_endpoint
URL obtained from the B2C policy metadata. Keep in mind single sign out is supported only by custom policies 并且它适用于同一浏览器,而不适用于设备。
对于本机 Android 移动应用程序,请使用 Ms 文档中的 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
)
}