OpenID Connect (OIDC) 和 OAuth 2.0 是两种不同的协议,它们通常一起使用,但服务于不同的目的。下面是它们的
主要区别和联系:
OAuth 2.0
OAuth 2.0 是一个授权框架,它允许第三方应用代表用户获取对服务器资源的有限访问权限。它不提供身份验证,而是专注于授权。OAuth 2.0 定义了四种角色:
-
资源所有者(Resource Owner):通常是用户,有权授予访问其受保护资源的权限。
-
客户端(Client):代表资源所有者并以其名义请求受保护资源的第三方应用。
-
授权服务器(Authorization Server):在成功验证资源所有者并获得授权后,向客户端发放访问令牌。
-
资源服务器(Resource Server):托管受保护资源的服务器,能够接受并使用访问令牌来响应客户端的请求。
OAuth 2.0 定义了几种授权流程(如授权码流程、隐式流程、资源所有者密码凭据流程和客户端凭据流程),用于不同的使用场景和安全需求。
OpenID Connect (OIDC)
OpenID Connect 是在 OAuth 2.0 之上构建的简单身份层。它允许客户端根据授权服务器的协议标准验证用户身份,并获取用户的基本概要信息。OIDC 在 OAuth 2.0 的四种角色基础上增加了一个角色:
-
身份提供者(Identity Provider, IdP):即授权服务器,负责验证用户身份并发放身份令牌(ID Token)。
OIDC 的核心是使用 id_token
来提供用户身份信息,这是一个符合 JSON Web Token (JWT) 格式的安全令牌,包含了用户的身份信息和验证状态。
联系与区别
-
联系:OIDC 使用 OAuth 2.0 的授权流程来实现身份验证,因此它们通常一起部署。在 OIDC 流程中,客户端不仅获取访问令牌(用于访问资源服务器上的资源),还获取
id_token
(用于验证用户身份)。 -
区别:OAuth 2.0 专注于授权,而 OIDC 专注于身份验证。OAuth 2.0 不提供用户身份信息,而 OIDC 提供了用户身份信息。
使用场景
-
OAuth 2.0:适用于需要代表用户访问受保护资源的场景,例如,一个图片编辑应用需要访问用户的云存储服务来获取图片。
-
OIDC:适用于需要验证用户身份并获取用户信息的场景,例如,一个社交网络应用需要验证用户的身份并获取其基本资料。
在实际应用中,通常会同时使用 OAuth 2.0 和 OIDC 来实现完整的身份验证和授权解决方案。例如,一个应用可能首先使用 OIDC 来验证用户身份,然后使用 OAuth 2.0 来获取访问用户资源的权限。
OIDC学习
-
OIDC 是什么? OIDC 是一个基于 OAuth 2.0 的身份认证协议,它增加了身份认证的功能。OIDC 通过在 OAuth 2.0 的基础上增加 ID Token(身份令牌),使得客户端能够识别并认证用户的身份。ID Token 通常采用 JWT(JSON Web Token)格式,包含用户的身份信息2。
-
OIDC 的角色定义
- OpenID Provider (OP):相当于 OAuth 2.0 中的授权服务器,负责颁发 Access Token 和 ID Token。
- Relying Party (RP):代指 OAuth 2.0 中的客户端,即请求 ID Token 的应用。
- End User (EU):即用户,ID Token 的信息中会包含关于终端用户的信息2。
-
OIDC 的特点
- 提供了用户身份验证。
- 使用 ID Token 传递用户身份信息。
- 通过定义 UserInfo Endpoint 来获取更多用户信息。
OAuth 2.0学习
-
OAuth 2.0 是什么? OAuth 2.0 是一个授权标准协议,允许用户将第三方应用安全地授权访问其在服务提供者上的数据,而无需共享用户名和密码。它主要用于资源的授权访问345。
-
OAuth 2.0 的角色定义
- 资源所有者(Resource Owner):拥有受保护资源的用户。
- 客户端(Client):希望访问资源所有者受保护资源的第三方应用程序。
- 授权服务器(Authorization Server):负责认证资源所有者并颁发访问令牌给客户端。
- 资源服务器(Resource Server):托管受保护资源的服务器345。
-
OAuth 2.0 的授权类型
- 授权码授权(Authorization Code Grant)
- 隐式授权(Implicit Grant)
- 密码授权(Resource Owner Password Credentials Grant)
- 客户端凭证授权(Client Credentials Grant)