searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

OIDC协议的概述和工作流程

2024-10-11 10:17:34
51
0

一、OIDC概述

OpenID Connect(OIDC)是一个基于OAuth 2.0协议的身份认证协议,它允许开发者验证跨网站和应用的用户身份,而无需拥有和管理密码文件。OIDC使用简单的REST/JSON消息流来实现,并且可以轻松集成。它允许所有类型的客户端,包括基于浏览器的JavaScript和本机移动应用程序,启动登录流程并接收对登录用户身份的可验证断言。OIDC是在OAuth2的基础上做了一个身份认证层,在客户端获取access_token的同时一并提供了一个用户的身份认证信息Id Token,广泛用于微服务、开放平台、SSO、三方登录授权等场景。OIDC的核心是OAuth 2.0协议的扩展,它不仅关注授权,即允许应用程序访问用户在其他服务上的资源,更强调身份验证。OIDC引入了id_token的概念,这是一种包含用户身份信息的JWT(JSON Web Token),使得应用可以确定访问者的身份。

二、OIDC的组件

  1. 身份提供商(Identity Provider, IdP):负责验证用户的身份,并颁发身份令牌的实体。
  2. 第三方应用(Relying Party, RP):需要验证用户身份的应用或服务。
  3. 用户代理(User Agent, UA):用户的浏览器或其他客户端软件,用于与 IdP 和 RP 交互。
  4. 授权码(Authorization Code):在 OAuth 2.0 流程中,IdP 向 RP 发送的一个临时代码,RP 使用该代码交换访问令牌。
  5. ID令牌(ID Token):OIDC 特有的概念,是一个 JWT(JSON Web Token),包含了用户的基本信息,用于直接验证用户身份。

三、OIDC的步骤流程

  1. 初始化认证请求

    • 用户请求访问依赖方(Relying Party,RP)的受保护资源。
    • RP识别出用户未认证或未授权,然后将用户重定向到身份提供商(Identity Provider,IdP)的认证端点。
  2. 用户认证

    • 用户到达IdP后,IdP会要求用户进行身份验证,这可能包括输入用户名和密码、手机验证码或其他多因素认证方式。
  3. 授权

    • 用户通过身份验证后,IdP会展示授权页面,请求用户授权RP访问其资源或个人信息。
    • 用户同意授权后,IdP会发放一个授权码(Authorization Code)给RP。
  4. 授权码交换

    • RP使用上一步获得的授权码,向IdP的令牌端点(Token Endpoint)请求令牌。
    • RP需要提供自己的客户端标识(client_id)和客户端密钥(client_secret)以及之前用于重定向的URI(redirect_uri)。
  5. 发放令牌

    • IdP验证授权码和RP的凭据后,会发放一个访问令牌(Access Token)和一个ID令牌(ID Token)给RP。
    • ID Token是一个JWT,包含了用户的身份信息和一些标准声明(Claims)。
  6. 验证ID令牌

    • RP接收到ID Token后,会对其进行验证,确保其有效性(例如检查签名、过期时间等)。
  7. 访问资源

    • RP使用Access Token请求用户信息或其他受保护的资源。
    • 如果需要,RP还可以使用Refresh Token来获取新的Access Token,当原Access Token过期时。
  8. 获取用户信息(可选):

    • RP可以使用Access Token调用IdP的用户信息端点(UserInfo Endpoint),以获取更完整的用户信息。

ID Token是OIDC的核心,它是一个JWT,包含了用户的基本信息,用于直接验证用户身份。ID Token中包含的Claims(声明)是关于用户的信息和其他元数据。OIDC规范定义了一组标准的权利要求,这组标准声明包括姓名、电子邮件、性别、出生日期等。

OIDC的优势在于其安全性、便捷性、标准化和扩展性。它通过HTTPS传输数据,使用JWT进行加密,确保了通信的安全性。用户只需在一个地方(IdP)登录,即可访问多个应用或服务,提高了用户体验。作为开放标准,OIDC兼容多种平台和服务,便于开发者集成和维护。此外,OIDC支持额外的认证信息和声明,满足不同场景下的需求。

OIDC适用于多种场景,包括企业应用的单点登录(SSO)、社交媒体登录、云服务与API访问以及物联网与移动应用中的安全用户认证

0条评论
0 / 1000
郑****颖
1文章数
0粉丝数
郑****颖
1 文章 | 0 粉丝
郑****颖
1文章数
0粉丝数
郑****颖
1 文章 | 0 粉丝
原创

OIDC协议的概述和工作流程

2024-10-11 10:17:34
51
0

一、OIDC概述

OpenID Connect(OIDC)是一个基于OAuth 2.0协议的身份认证协议,它允许开发者验证跨网站和应用的用户身份,而无需拥有和管理密码文件。OIDC使用简单的REST/JSON消息流来实现,并且可以轻松集成。它允许所有类型的客户端,包括基于浏览器的JavaScript和本机移动应用程序,启动登录流程并接收对登录用户身份的可验证断言。OIDC是在OAuth2的基础上做了一个身份认证层,在客户端获取access_token的同时一并提供了一个用户的身份认证信息Id Token,广泛用于微服务、开放平台、SSO、三方登录授权等场景。OIDC的核心是OAuth 2.0协议的扩展,它不仅关注授权,即允许应用程序访问用户在其他服务上的资源,更强调身份验证。OIDC引入了id_token的概念,这是一种包含用户身份信息的JWT(JSON Web Token),使得应用可以确定访问者的身份。

二、OIDC的组件

  1. 身份提供商(Identity Provider, IdP):负责验证用户的身份,并颁发身份令牌的实体。
  2. 第三方应用(Relying Party, RP):需要验证用户身份的应用或服务。
  3. 用户代理(User Agent, UA):用户的浏览器或其他客户端软件,用于与 IdP 和 RP 交互。
  4. 授权码(Authorization Code):在 OAuth 2.0 流程中,IdP 向 RP 发送的一个临时代码,RP 使用该代码交换访问令牌。
  5. ID令牌(ID Token):OIDC 特有的概念,是一个 JWT(JSON Web Token),包含了用户的基本信息,用于直接验证用户身份。

三、OIDC的步骤流程

  1. 初始化认证请求

    • 用户请求访问依赖方(Relying Party,RP)的受保护资源。
    • RP识别出用户未认证或未授权,然后将用户重定向到身份提供商(Identity Provider,IdP)的认证端点。
  2. 用户认证

    • 用户到达IdP后,IdP会要求用户进行身份验证,这可能包括输入用户名和密码、手机验证码或其他多因素认证方式。
  3. 授权

    • 用户通过身份验证后,IdP会展示授权页面,请求用户授权RP访问其资源或个人信息。
    • 用户同意授权后,IdP会发放一个授权码(Authorization Code)给RP。
  4. 授权码交换

    • RP使用上一步获得的授权码,向IdP的令牌端点(Token Endpoint)请求令牌。
    • RP需要提供自己的客户端标识(client_id)和客户端密钥(client_secret)以及之前用于重定向的URI(redirect_uri)。
  5. 发放令牌

    • IdP验证授权码和RP的凭据后,会发放一个访问令牌(Access Token)和一个ID令牌(ID Token)给RP。
    • ID Token是一个JWT,包含了用户的身份信息和一些标准声明(Claims)。
  6. 验证ID令牌

    • RP接收到ID Token后,会对其进行验证,确保其有效性(例如检查签名、过期时间等)。
  7. 访问资源

    • RP使用Access Token请求用户信息或其他受保护的资源。
    • 如果需要,RP还可以使用Refresh Token来获取新的Access Token,当原Access Token过期时。
  8. 获取用户信息(可选):

    • RP可以使用Access Token调用IdP的用户信息端点(UserInfo Endpoint),以获取更完整的用户信息。

ID Token是OIDC的核心,它是一个JWT,包含了用户的基本信息,用于直接验证用户身份。ID Token中包含的Claims(声明)是关于用户的信息和其他元数据。OIDC规范定义了一组标准的权利要求,这组标准声明包括姓名、电子邮件、性别、出生日期等。

OIDC的优势在于其安全性、便捷性、标准化和扩展性。它通过HTTPS传输数据,使用JWT进行加密,确保了通信的安全性。用户只需在一个地方(IdP)登录,即可访问多个应用或服务,提高了用户体验。作为开放标准,OIDC兼容多种平台和服务,便于开发者集成和维护。此外,OIDC支持额外的认证信息和声明,满足不同场景下的需求。

OIDC适用于多种场景,包括企业应用的单点登录(SSO)、社交媒体登录、云服务与API访问以及物联网与移动应用中的安全用户认证

文章来自个人专栏
软件开发2024
1 文章 | 2 订阅
0条评论
0 / 1000
请输入你的评论
0
0