我的任务是为以下应用程序设置开发身份验证/授权基础设施:
- 多个API
- Web应用程序
- 移动(本机(应用程序
- 支持社交登录以及通过注册过程创建的用户登录
我一直在愉快地实现以下内容:
- Identity Server
- ASP.Net核心标识
- OIDC移动应用程序动态注册
- 移动应用程序的PKCE授权代码流
- Web应用程序的混合流
- 向API传递承载令牌
一切都很好,直到客户决定他们真的非常不喜欢打开浏览器进行身份验证的移动体验。他们更喜欢在应用程序中显示用户名/密码输入的想法。
我知道Auth Code+PKCE是目前的最佳实践,任何其他解决方案都会牺牲一些安全性。我的理解是,在某些情况下,使用嵌入式"网络视图"是不受欢迎的,甚至是被禁止的。所以我的问题是:
从安全角度来看,有哪些Auth Code+PKCE的替代方案仍然可以接受,但可以最大限度地提高移动用户体验(并最大限度地减少重定向(
我理解这种担忧,在我的上一家公司,移动登录可用性存在重大问题:
-
外观和感觉很重要-登录可能是人们使用您的应用的第一次体验
-
密码自动填充从未在网络视图中起作用-高调用户每次登录都必须在小型移动键盘上键入密码-他们在50%的登录中忘记了密码,导致非常沮丧
每个人都喜欢的解决方案是使用带有chrome自定义选项卡的AppAuth库(Android(+aswebauthentication会话iOS(
这项技术并不完美,实施起来也很棘手,但我认为这是最好的可用性选择。查看我的文章,也许可以由您的利益相关者运行:https://authguidance.com/2019/09/13/android-code-sample-overview/