我有一个带有机密PII(社会安全号码、工资单信息)的应用程序。为了方便起见,我想让用户使用OAuth ID(谷歌、链接)登录,但要求这些帐户在身份提供者中启用了多因素身份验证,即如果用户没有在其基础身份提供者帐户中启用MFA,则通过OAuth2登录失败。这使我能够避免将我的机密信息暴露给弱GMail密码。
有什么办法可以做到这一点吗?
不幸的是,没有。
在Google和Linkedin的情况下,身份验证级别与特定范围无关。Oauth响应也没有指定用户是否使用了OTP令牌。
即使用户注册了MFA,用户也可以将他正在使用的计算机注册为受信任的计算机,在这种情况下,谷歌永远不会提示他OTP。这种行为可能会阻止许多用户访问您的应用程序。
实际上,我相信你可以检查你自己的会话/令牌,看看它是否是通过谷歌、推特、脸书等完成的,然后在第一次使用该令牌时要求MFA/2FA/OTP。这有意义吗?
您可以使用浏览器身份验证器运行自己的TOTP微服务,浏览器身份验证器具有在浏览器中生成和验证密钥和令牌所需的组件,节点身份验证器具有补充的服务器端代码。
只需添加您自己的存储机制和对微服务的https调用,更新会话/令牌,并且在它们之上添加了双因素/多因素/一次性密码身份验证。