OpenID Connect(OIDC)是建立在 OAuth 2.0 协议之上的身份认证和授权协议。它为 Web 应用程序和移动应用程序提供了一种简化的、标准化的方式来进行身份验证和访问控制。OIDC 旨在为开发人员提供一种安全、互操作性强的身份验证解决方案。
在 OIDC 中,ID Token(身份令牌)和 Access Token(访问令牌)是两个不同的令牌,它们在身份验证和访问控制的流程中发挥不同的作用。
- ID Token(身份令牌):
作用: ID Token 用于在客户端和授权服务器之间传递有关身份认证的信息。它包含有关已经进行身份验证的用户的信息,如用户的身份标识、姓名、电子邮件等。 颁发时间: 在身份验证成功后,ID Token 会由授权服务器颁发给客户端。 生命周期: 通常,ID Token 的生命周期较短,用于表示当前用户的身份,并且不应该被用于访问资源服务器。
- Access Token(访问令牌):
作用: Access Token 用于访问受保护的资源。一旦用户被成功认证并且授权,客户端可以使用 Access Token 来请求受保护资源,例如 API 端点。 颁发时间: 在用户授权成功后,Access Token 会由授权服务器颁发给客户端。 生命周期: Access Token 的生命周期较长,允许客户端在一段时间内访问资源服务器。
区别:
- 内容差异: ID Token 包含关于用户身份的信息,而 Access Token 包含有关访问权限的信息。
- 用途不同: ID Token 用于客户端验证用户身份,Access Token 用于访问资源服务器上的受保护资源。
- 生命周期差异: 通常情况下,ID Token 的生命周期较短,而 Access Token 的生命周期较长。
使用场景:
当您需要在客户端上显示用户的身份信息时,例如在 UI 中显示欢迎消息或用户名时,您可以使用 ID Token。
当客户端需要通过 API 请求受保护资源时,客户端应使用 Access Token。
总体来说,ID Token 和 Access Token 是 OIDC 中两个不同但互相补充的令牌类型,用于支持身份验证和资源访问。