OAuth2不是用于身份验证吗?

时间:2017-11-23 06:14:07

标签: oauth-2.0 openid-connect

我不太明白为什么oauth2用于验证,而OpenID Connect用于验证目的。

来自OAuth2 RFC

  

授权服务器         服务器成功后向客户端发出访问令牌         验证资源所有者并获得授权。

另一方面,根据Authorization Code Flow RFC代理或信赖方被重定向到某种认证页面以便能够认证用户,不是吗?

此外,我一直在阅读基于Oauth2构建的OpenID Connect,以便为Oauth2提供身份验证机制。是不是?

1 个答案:

答案 0 :(得分:2)

OAuth2.0是一种授权协议。 OpenID Connect包含id令牌以在其上添加身份验证

  

授权服务器成功验证资源所有者并获得授权后,服务器向客户端发出访问令牌。

此处认证是针对授权服务器完成的,而不是针对依赖方。授权需要识别最终用户,并且只需要使用身份验证。

授权服务器对最终用户进行身份验证后,会发回可用于与受保护端点通信的访问令牌。访问令牌授权依赖方使用受保护的服务。

访问令牌永远不会对最终用户说任何话。它们对RP不透明,只能由授权服务器使用。但是id令牌是具有最终用户详细信息的JWT。这就是我说OpenID Connect提供身份验证的原因。

如何在OAuth2.0和OpenID Connect之间进行选择?

您需要考虑许多事实。其中包括"身份提供者支持协议的问题?"。但是,这一切都归结为你如何消费代币。

如果您的客户端应用程序只允许最终用户使用受保护的端点而不打扰其身份详细信息,则应使用OAuth2.0。

但是,如果您的客户端应用程序关注识别最终用户并对其进行身份验证(考虑客户端应用程序的其他功能,例如数据库调用,甚至是需要这些功能的欢迎消息),那么您应该使用OpenID Connect。