Chrome自定义标签初始Okta验证不重定向

时间:2017-08-14 19:10:18

标签: android redirect single-sign-on okta chrome-custom-tabs

我正在Android应用程序上实施SSO,我们在开发过程中使用Okta进行身份管理。我们设置了Okta,以便在成功进行用户/密码验证后,用户只需在后续登录时验证其密码。

我正在使用Chrome自定义标签打开浏览器网址,并在我的AndroidManifest中设置了正确的intent-filter配置。

我遇到的问题是初始身份验证屏幕没有重定向回应用程序,我收到了ERR_UNKOWN_URL_SCHEME错误页面。但是,从密码验证屏幕进行身份验证时,将识别应用方案,并将用户重定向回应用程序。

另请注意:在ERR_UNKOWN_URL_SCHEME错误页面中,如果我选择“在Chrome中打开”,该应用会选择重定向并将其重新放回应用中。这让我相信这可能是自定义标签问题。

启动Chrome自定义标签的代码如下所示:

    CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder(mCTSession)
            .setToolbarColor(ContextCompat.getColor(mContext, R.color.colorPrimary))
            .setStartAnimations(context, R.anim.slide_in_right, R.anim.slide_out_left)
            .setExitAnimations(context, android.R.anim.slide_in_left, android.R.anim.slide_out_right)
            .build();
    customTabsIntent.intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK);

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {
        String referrer = Intent.URI_ANDROID_APP_SCHEME + "//" + packageNameToUse;
        customTabsIntent.intent.putExtra(Intent.EXTRA_REFERRER, Uri.parse(referrer));
    }

    customTabsIntent.launchUrl(context, Uri.parse(fixedUrl));

我知道在较旧版本的CCT中报告了类似的问题,但该问题似乎已被修补。

还有其他人遇到过这个问题吗?

添加实际身份验证页面的图像以供参考...

初始用户/密码屏幕(不工作)

Initial Okta user/password screen

仅限密码验证屏幕(WORKS!):

enter image description here

1 个答案:

答案 0 :(得分:0)

即使问题看起来有所不同,也可以按照此处的说明进行解决:https://github.com/iainmcgin/AppAuth-Demo

相关部分是使用“非页内页面”作为auth流中的重定向URI。该页面的代码为https://appauth.demo-app.io/oauth2redirect,您必须将redirectUri js变量更改为您的应用uri(应用拦截的原始重定向URI)

作为参考,我最初在这里找到解决方案:"Navigation is blocked" when redirecting from Chrome Custom Tab to Android app