用户使用OAuth2.0注册时重新进行身份验证

问题描述 投票:0回答:1

在我的 saas 应用程序中,如果典型用户想要采取敏感操作(例如设置 2fa),他们需要通过再次输入密码来重新进行身份验证。

对于通过 Google 或 Github 等 oauth 提供商注册的用户,这些用户重新进行身份验证的最佳做法是什么?

他们应该:

  1. 被重定向到 oauth 提供商以重新进行身份验证?
  2. 确认发送到他们的电子邮件的代码?
  3. 完全跳过重新验证?
  4. 在采取这些敏感操作之前被迫创建密码?

我觉得上面的#1 有点毫无意义,因为任何有权访问其笔记本电脑的人都可以轻松地单击重新进行身份验证。与通过正常密码过程重新进行身份验证的用户相比,他们需要从内存中记住密码或访问可能被锁定的密码管理器,因此恶意行为者执行此操作可能会遇到更大的困难。

最好或最常见的方法是什么?大公司使用过哪些现实生活中的例子?或者说标准是什么?

authentication security oauth-2.0 oauth
1个回答
0
投票

总体概念是注册应该需要身份验证。但没有固定的解决方案,因为您的要求可能会有所不同。

示例流程

  • 客户端运行代码流程
  • 授权服务器 (AS) 验证参数并写入临时 cookie 以保护身份验证屏幕
  • AS 重定向到第一个身份验证屏幕
  • 用户选择注册选项并创建帐户,提供电子邮件和生成的密码
  • AS 使用上下文更新其临时 cookie,并显示带有继续按钮的“请验证您的电子邮件”屏幕
  • 用户必须使用电子邮件验证激活其帐户,然后单击继续
  • AS验证账户已激活,然后设置认证成功结果,无需重新认证
  • 客户端收到授权码并可以像任何其他用户一样继续

一般概念

  • 有一个注册验证器(上面的电子邮件验证)可以帮助防止垃圾邮件注册
  • 有用户认证方式
  • 有一个可以启用帐户恢复的设置

高级示例

在瑞典,许多用户拥有政府批准的强大安全移动应用程序,称为 BankID,使用户能够展示自己的身份。因此,您可以设计一个没有新密码的解决方案,如下所示:

  • BankID是注册验证器
  • Passkeys 是身份验证方法,因为它比 BankID 更快且更用户友好
  • 如果用户丢失密码,BankID 还可用于帐户恢复

总结

OAuth 2.0 规范中的授权服务器应该使您能够根据您的特定要求编写这些行为。确切的功能取决于实现。

© www.soinside.com 2019 - 2024. All rights reserved.