跳到主要内容
在线体验
微信咨询
获取方案

协议概述

协议简介

OpenID Connect (OIDC) 是一种建立在 OAuth 2.0 协议之上的身份认证协议。OIDC 通过在 OAuth 2.0 的基础上引入了标准化的身份认证流程,为应用程序提供了更为完整的身份验证解决方案。

OIDC 定义了一些角色和术语,包括:

  • 客户端(RP): 使用 OIDC 进行认证和授权的应用程序,例如 Web 应用、原生移动应用等。
  • 认证服务器(OP): 提供用户认证和授权服务的服务器,负责颁发 ID Token 和访问令牌。
  • 用户(EU): OIDC 的最终用户。
  • ID Token: 包含有关已验证用户的身份信息的 JSON Web Token(JWT),由认证服务器签名并在向客户端返回时加密。
  • 访问令牌(Access Token): 授权客户端访问受保护资源的令牌。

TOPIAM 目前支持如下认证模式:

模式是否支持
授权码模式
授权码模式(PKCE)
隐式模式
密码模式
设备模式
客户端模式

协议流程

  1. RP(客户端)向 OpenID 提供程序 (OP) 发送请求
  2. OP 验证 End-User 身份验证并颁发授权
  3. OP用 ID Token(通常是Access Token)进行响应
  4. RP携带 Access Token 发送请求到 UserInfo Endpoint
  5. UserInfo Endpoint返回 End-User 的Claims

下图说明了这些步骤:

+--------+                                   +--------+
| | | |
| |---------(1) AuthN Request-------->| |
| | | |
| | +--------+ | |
| | | | | |
| | | End- |<--(2) AuthN & AuthZ-->| |
| | | User | | |
| RP | | | | OP |
| | +--------+ | |
| | | |
| |<--------(3) AuthN Response--------| |
| | | |
| |---------(4) UserInfo Request----->| |
| | | |
| |<--------(5) UserInfo Response-----| |
| | | |
+--------+ +--------+

协议参数

客户端向认证服务器发起认证请求,并提供以下参数:

  • response_type: 必选,固定为 codeid_tokentokencode id_tokencode tokenid_token tokencode id_token token,表示授权类型。
  • client_id: 必选,客户端的唯一标识符。
  • redirect_uri: 必选,用于接收认证结果的 URI。
  • scope: 可选,请求的范围,例如 openid profile email,其中 openid 是必选的。
  • nonce: 可选,用于防止重放攻击的随机数,仅在响应类型为 id_tokencode id_tokenid_token tokencode id_token token 时必选。
  • state: 可选,用于客户端的跨站请求伪造(CSRF)保护。

认证服务器对用户进行认证,并返回以下参数:

  1. id_token: 代表用户身份的 JWT 格式的令牌,包含用户的标识信息和认证信息。
  2. access_token: 代表访问令牌,用于访问用户授权的资源。
  3. refresh_token: 代表刷新令牌,用于获取新的访问令牌。
  4. token_type: 代表访问令牌的类型,一般为 Bearer
  5. expires_in: 代表访问令牌的有效期,单位为秒。
  6. scope: 代表访问令牌的权限范围。
  7. state: 用于防止跨站点请求伪造攻击,防止攻击者通过构造恶意 URL,诱骗用户访问认证服务器,获取授权码或令牌。

其中,id_token 是 OIDC 协议独有的,它包含了用户的身份信息和认证信息。OAuth2 协议中只有 access_tokenrefresh_token

更多资料