目录
OAuth 2.0
OpenID Connect (OIDC)
功能不同
参与方稍微不同
协议流程不同
Token 类型不同
使用场景不同
在理解 OpenID Connect(OIDC)和 OAuth 2.0 之间的区别之前,再回顾下它们各自的基本概念。
OAuth 2.0
OAuth 2.0(Open Authorization 2.0,开放授权 2.0)是被广泛使用的一种开放的标准授权协议,用于授权一个应用程序访问用户在另一个应用程序上的受保护资源,而无需共享用户的访问凭证(如用户名和密码)。OAuth 2.0 的设计不仅提高了安全性,并且简化了开发者的集成过程。OAuth 2.0 并不是一种身份验证协议,而是专注于授权,即允许一个系统在不暴露用户凭证的情况下获得对另一个系统的访问权限。
OpenID Connect (OIDC)
OpenID Connect 是一种基于 OAuth 2.0 的身份验证层,通过引入一些新的概念和组件,使客户端能够验证用户的身份并获取用户的基本信息。OpenID Connect 的核心目标是提供一种简单、安全且标准化的方式,让客户端能够确认用户的身份。OIDC 通过在 OAuth 2.0 的基础上添加 ID 令牌(ID Token)来实现身份验证。
接下来具体看下 OpenID Connect 与 OAuth 2.0 的区别:
功能不同
- OAuth 2.0 主要用于授权,即允许第三方应用访问用户的资源而不需要用户提供其用户名和密码。通过 OAuth 2.0,应用可以请求对特定数据的访问权限,比如查看用户的照片或者发布状态更新。
- OpenID Connect 则主要用于身份认证,即确认用户的身份。在 OAuth 2.0 的基础上增加了一层身份验证功能,使得应用不仅能够获得授权,还能验证用户的身份。
参与方稍微不同
- OAuth 2.0 定义了四个角色:客户端(Client)、资源所有者(Resource Owner)、授权服务器(Authorization Server)和资源服务器(Resource Server)。
- OpenID Connect 在 OAuth 2.0的基础上增加了身份提供者(IDP)角色,负责发放 ID Token。
协议流程不同
- OAuth 2.0 定义了不同的授权流程(authorization flows),包括授权码授权流程(Authorization Code Grant)、隐式授权流程(Implicit Grant)、密码授权流程(Resource Owner Password Credentials Grant)和客户端凭证授权流程(Client Credentials Grant),用于获取 Access Token。
- OpenID Connect 在 OAuth 2.0 的基础上添加了 ID Token 以及用于获取用户信息的端点。OpenID Connect 支持的流程和 OAuth 2.0 略有不同,OpenID Connect 支持的流程包括授权码流程(Authorization Code Flow)、隐式流程(Implicit Flow)和混合流程(Hybrid Flow)
Token 类型不同
- OAuth 2.0 通常颁发 Access Token 和 Refresh Token,主要用于访问资源,包含访问范围、有效期等信息。
- OpenID Connect 在 OAuth 2.0 基础上多颁发了一个 ID Token,ID Token 是 JWT(JSON Web Token)格式的,包含了用户身份的信息,例如用户标识符、签名算法、过期时间等,主要用于身份认证。
使用场景不同
- OAuth 2.0 通常用于授权第三方应用程序访问受保护资源,如用户的照片、视频等。
- OpenID Connect 通常用于实现身份验证,允许用户使用其在身份提供者上的凭据登录到不同的客户端应用程序。