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