首页 > 解决方案 > OKTA SSO 注销问题

问题描述

我正在使用okta-sdk-appauth-android库在移动原生 android 应用程序中进行身份验证。

登录有效,但我在注销和下一个登录周期时遇到问题。当我使用库中的注销方法时,在下一个登录周期webview中显示登录屏幕,但它立即登录用户而没有手动提供登录名和密码的选项。这是正常行为吗?使用这种登录方式,我无法在注销后立即登录另一个用户。只有有时有提供登录名和密码的选项……这取决于什么?我可以在每次注销后强制提供登录名和密码吗?即使在我的访问和刷新令牌过期后,它也会自动登录用户。我正在使用本机应用程序配置 + PKCE.

标签: androidauthenticationoktapkce

解决方案


我解决了这个问题如下:

  • 按下注销按钮后立即调用 webAuthClient.signOutOfOkta(Activity)。
  • ResultCallback中会返回结果,看是否登录。
  • 调用 webAuthClient.sessionClient.clear()

像这样 :

webAuthClient.registerCallback(object : ResultCallback<AuthorizationStatus, AuthorizationException> {
            override fun onCancel() {
                network_progress.hide()
                showMessage(getString(R.string.operation_cancelled))
            }

            override fun onError(msg: String?, exception: AuthorizationException?) {
                signInError(msg, exception)
            }

            override fun onSuccess(result: AuthorizationStatus) {
                network_progress.hide()
                when (result) {
                    AUTHORIZED -> signInSuccess()
                    SIGNED_OUT -> webAuthClient.sessionClient.clear()
                }
            }
        }, this)

推荐阅读