【发布时间】:2016-12-06 05:32:55
【问题描述】:
我的问题是,实施 OAuth 2.0 身份验证是否使我能够针对 OpenID Connect 提供者进行身份验证?
例如,Vert.x 提供 OAuth 2.0 身份验证。如果实施,是否足以启用针对 OpenID Connect 提供程序的身份验证?
提前致谢。
【问题讨论】:
我的问题是,实施 OAuth 2.0 身份验证是否使我能够针对 OpenID Connect 提供者进行身份验证?
例如,Vert.x 提供 OAuth 2.0 身份验证。如果实施,是否足以启用针对 OpenID Connect 提供程序的身份验证?
提前致谢。
【问题讨论】:
一般来说,是的,这就足够了,因为 OpenId Connect 是 OAuth 2.0 规范的扩展。
OAuth 2.0 和 OpenId Connect 之间的main difference 是 OAuth 2.0 服务器最终(在get-token 请求的响应中)发送access_token(通常是 UUID 字符串,但可以是 JWT)然后客户端应用程序可以使用它来访问 OAuth 2.0 服务器的 (REST) API。对此 API 的调用超出了 OAuth 2.0 规范(这就是 Facebook、Google 和其他公司拥有自己的 OAuth 连接器的原因)。
OpenId Connect Provider 最后发送access_token 和id_token,后者是JWT 并包含用户数据(名字、姓氏、电子邮件等)。或者,OpenId Connect Provider 可能不会发送 id_token,但希望调用 UserInfo Endpoint 以返回用户数据。
因此,您可以使用“原始”OAuth 2.0 客户端并使用它从 OpenID Connect Provider 获取 access_token。然后您可以获取该令牌并向 UserInfo 端点运行额外的 HTTP 请求,解码数据并实现 OpenId Connect 功能。
【讨论】:
是的,OpenID Connect 位于 OAuth 2.0 之上/向后兼容。因此,任何 OAuth 2.0 客户端库都将能够针对 OIDC 服务器进行身份验证,并在需要时使用标准 OAuth 2.0 访问令牌从 UserInfo Endpoint 读取用户配置文件。
【讨论】:
否,因为您无法使用(符合标准的)OAuth 2.0 对用户进行身份验证。见http://oauth.net/articles/authentication/
【讨论】: