黑狐家游戏

jwt单点登录和sso单点登录,jwt单点登录流程图

欧气 3 0

《JWT单点登录与SSO单点登录:原理、流程及对比》

jwt单点登录和sso单点登录,jwt单点登录流程图

图片来源于网络,如有侵权联系删除

一、JWT单点登录流程

(一)JWT简介

JWT(JSON Web Token)是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息作为JSON对象,JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。

(二)JWT单点登录流程

1、用户登录

- 用户访问应用系统A的登录页面,输入用户名和密码等凭证信息。

- 应用系统A的认证服务器接收到用户凭证后,对其进行验证,如果验证通过,认证服务器会创建一个JWT。

- 在创建JWT时,头部包含令牌的类型(如“JWT”)和所使用的签名算法(如HMAC - SHA256),载荷部分包含用户的相关信息,如用户ID、用户名、角色等自定义的声明信息,使用服务器的私钥对头部和载荷进行签名,生成签名部分,最终组合成一个完整的JWT。

2、颁发JWT

- 认证服务器将生成的JWT颁发给用户,这个JWT可以通过HTTP响应的头部(如Authorization头部)或者作为响应体中的一个字段返回给用户。

3、用户访问其他应用系统(SSO场景)

- 当用户想要访问与应用系统A相关联的应用系统B时,用户将JWT包含在请求中(例如在HTTP请求的Authorization头部中带上Bearer <JWT>)发送给应用系统B。

4、应用系统B验证JWT

- 应用系统B接收到包含JWT的请求后,首先会验证JWT的签名,它使用认证服务器公开的公钥来验证签名,以确保JWT没有被篡改。

- 检查JWT的有效期(如果有设置)以及载荷中的相关声明信息,如果一切验证通过,应用系统B就可以根据JWT中的用户信息为用户提供相应的服务,而无需用户再次登录。

二、SSO单点登录流程

(一)SSO简介

SSO(Single Sign - On)即单点登录,是一种身份验证机制,允许用户使用一组凭据(如用户名和密码)登录到多个相关的应用系统中。

jwt单点登录和sso单点登录,jwt单点登录流程图

图片来源于网络,如有侵权联系删除

(二)SSO单点登录流程

1、用户首次登录

- 用户访问应用系统A的登录页面,输入用户名和密码。

- 应用系统A将用户的登录请求发送到SSO认证中心。

- SSO认证中心对用户的凭证进行验证,如果验证成功,SSO认证中心会创建一个全局会话(Global Session),并为用户生成一个唯一的标识(如Ticket或Session ID)。

- SSO认证中心将这个标识返回给应用系统A,同时也可能会在用户浏览器中设置一个Cookie来表示用户已经在SSO认证中心登录。

2、访问其他应用系统

- 当用户想要访问应用系统B时,用户向应用系统B发起访问请求。

- 应用系统B发现用户没有本地会话,于是将用户重定向到SSO认证中心,并带上应用系统B的标识(如服务名称等)。

- SSO认证中心根据用户浏览器中的Cookie或者之前创建的全局会话,识别出已经登录的用户,SSO认证中心会为应用系统B生成一个针对该用户的临时票据(如Service Ticket)。

- SSO认证中心将用户重定向回应用系统B,并带上这个临时票据。

- 应用系统B接收到临时票据后,会向SSO认证中心验证这个票据的有效性,如果验证通过,应用系统B会创建本地会话,允许用户访问系统资源。

三、JWT单点登录与SSO单点登录的对比

(一)数据存储与状态管理

JWT单点登录

- JWT是一种无状态的身份验证方式,服务器不需要存储用户的会话信息(除了用于验证签名的公钥),JWT本身包含了足够的用户信息,各个应用系统可以根据JWT中的信息独立地进行验证和授权,这使得系统具有更好的可扩展性,适合微服务架构等分布式环境。

SSO单点登录

- SSO需要SSO认证中心来维护用户的全局会话状态,当用户访问不同应用系统时,SSO认证中心需要根据存储的会话信息来生成和验证临时票据,这种方式在大规模分布式系统中可能会面临会话存储的性能和可扩展性问题,例如需要考虑会话数据的存储方式(如内存、数据库等)以及如何在多节点环境下保持会话的一致性。

jwt单点登录和sso单点登录,jwt单点登录流程图

图片来源于网络,如有侵权联系删除

(二)安全性

JWT单点登录

- JWT的签名机制确保了数据的完整性和真实性,只要私钥安全保管,JWT在传输过程中很难被篡改,如果JWT中的载荷包含敏感信息,可能存在信息泄露的风险,因为JWT是可以被解码查看的(虽然签名保证了未被篡改)。

SSO单点登录

- SSO通过票据的验证机制来保证安全性,临时票据通常具有时效性和一次性使用的特点,降低了票据被盗用的风险,SSO认证中心的集中管理也可以方便地实施安全策略,如限制登录尝试次数、检测异常登录行为等。

(三)跨平台和互操作性

JWT单点登录

- 由于JWT是基于JSON格式的开放标准,它具有很好的跨平台性,可以在Web应用、移动应用(如iOS和Android)以及各种不同的编程语言和框架之间方便地使用。

SSO单点登录

- SSO的实现方式可能因不同的SSO解决方案(如CAS、OAuth等)而有所不同,在跨平台和互操作性方面可能需要更多的适配工作,尤其是在与不同技术栈的应用系统集成时。

(四)开发复杂度

JWT单点登录

- 开发相对简单,只需要在各个应用系统中实现JWT的生成(在认证服务器端)和验证(在资源服务器端)逻辑,不需要复杂的重定向和票据交换机制。

SSO单点登录

- 开发复杂度较高,需要建立SSO认证中心,处理应用系统之间的重定向、票据生成和验证等复杂逻辑,并且要确保各个应用系统与SSO认证中心之间的通信安全和稳定。

JWT单点登录和SSO单点登录各有优缺点,在实际应用中需要根据具体的业务需求、系统架构和安全要求等因素来选择合适的单点登录方案。

标签: #jwt #sso #单点登录 #流程图

黑狐家游戏
  • 评论列表

留言评论