请问OpenID principal是否通过了双因素认证?

Can I ask if the OpenID principal did pass a two-factor authentication?

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

我的目标很简单:当用户使用OpenID主体注册或登录时,我想查询身份验证服务并判断用户是否启用了双因素身份验证。如果他这样做了,并且通过了两个步骤,"Welcome user",否则 "Sorry buddy but this site is very secure and you must enable two-factor authentication".

是否可以使用当前服务? 我已阅读 Google docs 但一无所获。由于 OpenID Connect 不支持令牌的任何 "two-step authentication" 属性,也不支持可能被利用的 "strength" 属性,因此我必须依赖可能泄露此类信息的特定配置文件 API。但我至少在 Google APIs.

中还没有发现

郑重声明: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。

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

很遗憾,您提到的提供程序尚不支持 acr 概念,因此答案是 "no",尽管 Microsoft Azure AD return amrid_token.

中声明