认识
一、认识
OpenID Connect (OIDC)
是建立在 OAuth 2.0
协议之上的,但与 OAuth 2.0
主要聚焦于授权不同,OpenID Connect (OIDC)
关注的是用户身份认证。OpenID Connect (OIDC)
允许客户端通过 ID Token
来验证用户的身份,同时还可以使用 Access Token
来访问授权的资源。
-
OAuth 2.0
: 是一个授权框架,允许第三方应用在不暴露用户凭证的情况下,访问用户在某些资源服务器上的数据。 -
OpenID Connect (OIDC)
: 基于OAuth 2.0
的身份验证协议,OpenID Connect (OIDC)
不仅关注授权,还包括认证功能,允许客户端应用确认用户的身份。
二、工作流
OpenID Connect (OIDC)
的工作流程通常是基于 OAuth 2.0
的授权码(Authorization Code
)流程,包含以下几个关键步骤:
1. 客户端重定向用户到身份提供者(IdP
): 用户访问应用(SP
),如果没有有效的 Access Token
,应用将用户重定向到身份提供者(IdP
)进行身份认证。在重定向过程中,应用向 IdP
提供必要的参数:client_id
(客户端 ID
)、redirect_uri
(回调地址)、scope
(通常是 openid
、profile
等),以及 response_type=code
(表明要使用授权码流)。
2. 用户登录: 用户在 IdP
处进行身份验证,可能是输入用户名和密码,或者使用其他认证方式(如二次验证、OAuth 2.0
等)。IdP
验证成功后,会将用户重定向回应用的 redirect_uri
,并附带一个 授权码(Authorization Code
)。
3. 客户端使用授权码交换 Token
: 客户端收到授权码后,向 IdP
的令牌端点发送一个 POST
请求,包含 client_id
、client_secret
、redirect_uri
和授权码等信息。IdP
返回 Access Token
、ID Token
和 Refresh Token
(可选)。
4. 使用 Token
访问资源: 客户端应用可以使用 Access Token
来访问受保护的 API
或资源。客户端应用还可以验证 ID Token
的签名和内容,确认用户的身份。