2

我正在为一个新项目设计一个身份验证方案。人们将能够使用 . 通过 Google/Facebook/Microsoft 等帐户进行身份验证OpenID。所有这些提供商都支持双因素身份验证。

我的目标很简单:当用户使用 OpenID 主体注册或登录时,我想查询身份验证服务并判断用户是否启用了两因素身份验证。如果他这样做了,并且通过了两个步骤,“欢迎用户”,否则“对不起,伙计,这个网站非常安全,您必须启用双重身份验证”。

使用当前服务可以做到这一点吗?我已经阅读了谷歌文档并没有发现任何关于它的信息。由于 OpenID Connect 不支持令牌的任何“两步验证”属性,也不支持可能被利用的“强度”属性,因此我必须依赖可能泄露此类信息的特定配置文件 API。但至少在 Google API 中我还没有找到。

4

1 回答 1

1

记录一下:OpenID 2.0 和 OpenID Connect 是不同的协议。大多数提供商正在从早期的 OpenID 2.0 标准转向 OpenID Connect。

Facebook 不支持 OpenID 2.0 也不支持 OpenID Connect,但它使用自己构建在 OAuth 2.0 之上的登录协议。Google 已弃用 OpenID 2.0 支持,转而支持 OpenID Connect。Microsoft 支持 LiveID 的 OpenID 2.0,但也在向 OpenID Connect 发展;他们的 Azure AD 帐户已经支持 OpenID Connect。

acrOpenID Connect 支持不同的身份验证方法,客户端可以通过使用请求声明集中的声明作为身份验证请求的一部分来请求指定的值,请参阅:http: //openid.net/specs/openid-connect-core- 1_0.html#acr语义。提供者必须返回与请求acrid_token之一匹配的声明值。提供者还可以返回一个amr声明,它是一个 JSON 字符串数组,这些字符串是身份验证中使用的身份验证方法的标识符。

不幸的是,您提到的提供商还不支持这个acr概念,所以答案是“不”,尽管 Microsoft Azure AD 确实amrid_token.

于 2015-01-03T12:31:18.127 回答