我们有一个使用
OAuth 2.0
进行登录的应用程序。在我们的应用程序中,我们使用 AppAuth-Android
来实现此流程。作为重定向 URI,我们使用 HTTPS 方案链接 - https://example.com/oauthRedirect
,并在 https://{domain}/.well-known/assetlinks.json
添加数字资产链接文件。我们已经确认,当我们的应用程序安装时,此验证成功,并且在测试过程中发现浏览器被关闭,用户被重定向回我们的应用程序。但我们收到用户报告称他们无法登录。由于某种原因,应用程序无法处理重定向应用程序链接。
我们能够重现此问题的唯一方法是在飞行模式下安装应用程序以强制意图过滤器验证失败。但由于这个验证过程是我们无法控制的,我们可以采取什么样的对策来处理这种极端情况呢?我知道 Android 12 添加了一个新的 API,要求用户手动为我们的应用启用链接处理,并计划在没有更好的解决方案的情况下实现这一点。
我很想知道其他人以前是否遇到过这个问题,以及他们是如何处理的。任何帮助将不胜感激!
这是一个很好的问题,因为从逻辑上讲,应用程序链接应该是 OAuth 2.0 安全应用程序使用的最主流的移动登录机制:
用户手势要求
如果用户执行 OpenID Connect 重定向并已登录另一个应用程序,则不会有 Chrome 自定义选项卡用户手势,并且
not returning to the app
问题是众所周知的。基于私有 URI 方案的登录响应可能会发生这种情况,但往往是
您可以尝试以下几种可能的解决方案:
使用 OpenID Connect
prompt=none
参数强制每个用户重定向时登录
某些授权服务器可能允许您配置在身份验证后运行的确认页面的身份验证步骤,以强制用户手势
您可以配置同意屏幕以在每次用户登录时运行
您可以使用插页式页面来接收授权代码,然后使用深层链接将其转发到应用程序。我的Android 博客文章展示了它是如何工作的,您可以在模拟器或设备上运行我的代码示例来测试可靠性。
参考文献