【问题标题】:Logout in Azure AD B2C Android using MSAL使用 MSAL 在 Azure AD B2C Android 中注销
【发布时间】:2020-08-27 09:57:54
【问题描述】:

我已使用MSAL library 在我的移动应用程序上集成了Azure AD B2C。我为SignIn and SignUp 创建了用户流。身份验证成功后,我将获得访问令牌。所以我在我的一个活动页面上的移动应用程序上设计了我的注销按钮,所以一旦我点击在应用程序上设计的注销按钮,我需要从应用程序中获取用户signedOut。那么我们如何在 Android 上的 AZURE AD B2C MSAL 中执行SignOut

即使我清除了我的偏好中保存的访问令牌也可以吗?或者有没有其他方法可以通过MSAL library 从 Azure 端提供注销?

【问题讨论】:

    标签: android azure azure-ad-b2c msal


    【解决方案1】:

    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

    【讨论】:

    • Krishna - 目前这适用于本机移动应用程序,并且也使用 MSAL 实现移动应用程序。那么如何才能从我的移动设备上退出呢?
    • Krishna - 我想,那是为了网络端的实现。目前我正在从AZURE AD B2C MSAL询问本机Android设备上的signOut进程@
    • 嗨@vinayak,请告诉我我更新的答案有帮助。
    • 克里希纳 - 这对我来说很好用。我已经关注了你提供的链接。
    【解决方案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
              )
      
          }
      

      【讨论】:

        猜你喜欢
        • 2020-11-27
        • 1970-01-01
        • 2021-09-18
        • 1970-01-01
        • 1970-01-01
        • 2021-07-09
        • 2021-08-17
        • 1970-01-01
        • 2018-08-10
        相关资源
        最近更新 更多