跳到主要内容

认识

2025年01月07日
柏拉文
越努力,越幸运

一、认识


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(通常是 openidprofile 等),以及 response_type=code(表明要使用授权码流)。

2. 用户登录: 用户在 IdP 处进行身份验证,可能是输入用户名和密码,或者使用其他认证方式(如二次验证、OAuth 2.0 等)。IdP 验证成功后,会将用户重定向回应用的 redirect_uri,并附带一个 授权码(Authorization Code)。

3. 客户端使用授权码交换 Token: 客户端收到授权码后,向 IdP 的令牌端点发送一个 POST 请求,包含 client_idclient_secretredirect_uri 和授权码等信息。IdP 返回 Access TokenID TokenRefresh Token(可选)。

4. 使用 Token 访问资源: 客户端应用可以使用 Access Token 来访问受保护的 API 或资源。客户端应用还可以验证 ID Token 的签名和内容,确认用户的身份。