【问题标题】:SignOut issue from Microsoft Active Directory SDK for AndroidMicrosoft Active Directory SDK for Android 的注销问题
【发布时间】:2020-07-10 18:52:58
【问题描述】:

我在我的 Android 应用程序中使用 Microsoft Azure Active Directory SDK 进行身份验证。登录和图形 API 实现工作正常。但是当我调用 SDK 的注销方法时。它从应用程序中注销我。但是当我再次按下登录时,它会打开登录的浏览器覆盖。 Microsoft 页面向我显示了我的最后一个帐户作为要选择的项目。一旦我点击了该项目,它就可以让我登录应用程序而无需再次询问密码。

所以微软似乎没有清理 SDK 打开的浏览器中的用户帐户实例。 我试图在注销回调方法中清理 Cookies & Cache。但还没有成功。

以前有人遇到过这样的问题吗?几天前,我也遇到了 OKta 身份验证这样的问题。它也是一个用于登录的开放式浏览器覆盖。

【问题讨论】:

    标签: android azure-active-directory microsoft-graph-api okta-api azure-authentication


    【解决方案1】:

    这是一个讨论类似问题的线程。并且很可能是您遇到的问题。 https://github.com/Azure-Samples/active-directory-xamarin-native-v2/issues/86 主要是您可以清除嵌入式浏览器的令牌缓存,但不能从 chrome 浏览器清除。这是设计使然。

    基本上您正在退出您的应用程序,而不是退出 azure 广告。如果有其他应用程序或网站或电子邮件帐户使用相同的登录名,那么您会将它们全部踢出,这不一定是一件好事。在线程中提到了类似但使用 google 登录的内容:How to Logout of an Application Where I Used OAuth2 To Login With Google? 这为您提供了一些快速而肮脏的示例,说明如何注销 authprovider,基本上是调用注销端点。如果你想为 azure 做类似的事情,你必须做类似的事情。

    【讨论】:

      【解决方案2】:

      它对我有用,

      同时清除您的 cookie 和共享偏好 Clear browser cookies after logout

      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()
          }
      

      【讨论】:

        猜你喜欢
        • 2019-02-23
        • 2015-04-03
        • 2018-03-09
        • 1970-01-01
        • 2023-03-07
        • 2011-08-24
        • 1970-01-01
        • 2021-06-26
        • 2015-11-17
        相关资源
        最近更新 更多