我正在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中报告了类似的问题,但该问题似乎已被修补。
还有其他人遇到过这个问题吗?
添加实际身份验证页面的图像以供参考...
初始用户/密码屏幕(不工作):
仅限密码验证屏幕(WORKS!):
答案 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