黑狐家游戏

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

欧气 3 0

本文目录导读:

  1. JWT单点登录流程
  2. SSO单点登录流程
  3. JWT单点登录与SSO单点登录的比较

《JWT单点登录与SSO单点登录流程全解析》

JWT单点登录流程

(一)用户认证请求

1、用户访问受保护的资源(如应用A),应用A检测到用户未登录,于是将用户重定向到认证服务器(Auth Server)。

2、用户向认证服务器发送包含用户名和密码(或者其他认证方式相关信息,如第三方登录凭证)的登录请求。

(二)认证服务器认证

1、认证服务器接收到登录请求后,对用户提供的凭据进行验证,如果验证通过,认证服务器开始构建JWT(JSON Web Token)。

2、JWT包含三部分:头部(Header)、载荷(Payload)和签名(Signature),头部通常包含算法类型(如HS256)等元数据;载荷包含用户的一些关键信息,例如用户ID、用户名、角色信息、过期时间等;签名则是通过头部指定的算法对头部和载荷进行签名,用于验证JWT的完整性和真实性。

(三)颁发JWT

1、认证服务器将生成的JWT颁发给用户,用户可以将JWT存储在本地,例如浏览器的本地存储(Local Storage)或者Cookie中(不过存储在Cookie中需要注意跨域和安全问题)。

(四)用户访问资源

1、用户携带JWT再次访问应用A。

2、应用A接收到带有JWT的请求后,首先验证JWT的签名,以确保JWT没有被篡改,然后检查JWT的过期时间,如果未过期,应用A从JWT的载荷中获取用户相关信息,根据这些信息进行授权操作,例如判断用户是否具有访问特定资源的权限,如果验证通过且用户有权限,应用A允许用户访问请求的资源。

(五)单点登录到其他应用(应用B)

1、当用户想要访问另一个受保护的应用B时,用户直接向应用B发送携带JWT的请求(因为JWT是一种自包含的凭证,无需再次向认证服务器进行认证,只要应用B信任认证服务器颁发的JWT即可)。

2、应用B按照与应用A相同的验证流程,对JWT进行验证和授权操作,如果验证成功,用户可以直接访问应用B的资源,实现了单点登录。

SSO单点登录流程

(一)用户首次访问应用A

1、用户访问应用A,应用A检测到用户未登录,将用户重定向到SSO认证中心,并在重定向请求中携带应用A的标识(如回调URL等信息),以便认证中心在认证成功后知道将用户重定向回哪里。

2、用户进入SSO认证中心的登录页面,输入用户名和密码(或其他认证方式相关信息)。

(二)SSO认证中心认证

1、SSO认证中心接收到用户的登录请求后,对用户的凭据进行验证,如果验证通过,SSO认证中心会创建一个全局会话(Global Session)来表示用户已经登录。

2、SSO认证中心会生成一个与该用户对应的票据(Ticket),这个票据包含用户的身份信息以及一些用于安全验证的信息。

(三)重定向回应用A

1、SSO认证中心将用户重定向回应用A,并在重定向请求中携带生成的票据。

2、应用A接收到带有票据的重定向请求后,会向SSO认证中心发送验证票据的请求,以确保票据的真实性和有效性。

3、SSO认证中心对应用A发送的票据验证请求进行响应,告知应用A票据是否有效,如果有效,应用A创建自己的局部会话(Local Session),并根据用户的身份信息进行授权操作,允许用户访问应用A的资源。

(四)单点登录到应用B

1、当用户想要访问应用B时,应用B检测到用户未登录,同样将用户重定向到SSO认证中心,并携带应用B的标识。

2、由于用户已经在SSO认证中心有全局会话,SSO认证中心识别出用户已经登录,直接生成一个新的票据(或者重用之前的票据,根据具体的实现方式),并将用户重定向回应用B,同时携带新的票据。

3、应用B接收到票据后,向SSO认证中心验证票据,若验证成功,创建自己的局部会话,根据用户身份信息授权,从而实现用户无需再次输入凭据即可访问应用B的资源,完成单点登录。

JWT单点登录与SSO单点登录的比较

(一)数据存储与传输

1、JWT单点登录

- JWT是一种自包含的令牌,它将用户信息以加密和签名的方式直接包含在令牌中,在传输过程中,只需要传输这个JWT字符串即可,在存储方面,用户端可以根据实际情况选择将JWT存储在本地存储或者Cookie中,服务器端不需要额外存储关于用户登录状态的大量信息(除了验证JWT所需的密钥等少量配置信息),减轻了服务器的存储负担。

- 在一个微服务架构中,各个微服务只需要验证JWT的有效性就可以获取用户信息,不需要与中央服务器进行额外的会话状态查询。

2、SSO单点登录

- 在SSO中,SSO认证中心需要存储用户的全局会话信息,包括用户的登录状态、权限等信息,当用户访问不同应用时,应用与SSO认证中心之间需要传输票据等信息进行验证,应用端也需要存储自己的局部会话信息,这种方式相对来说存储和传输的数据结构更为复杂,并且SSO认证中心需要承担更多的存储和管理任务。

(二)安全性

1、JWT单点登录

- JWT的安全性依赖于签名算法,如果签名算法被破解或者密钥泄露,JWT可能会被伪造,不过,只要合理选择算法(如使用强加密算法如RS256等)和妥善保管密钥,JWT可以提供较高的安全性,并且JWT的载荷中的信息是经过加密签名的,在传输过程中不容易被篡改。

- 由于JWT可以被存储在本地,如果用户的设备被恶意攻击,本地存储的JWT可能会被窃取,为了提高安全性,可以设置较短的过期时间,并采用刷新令牌等机制。

2、SSO单点登录

- SSO的安全性主要依赖于票据的安全性,票据通常是一次性使用或者有较短的有效期,并且在传输过程中也需要进行加密等安全措施,SSO认证中心需要对全局会话进行安全管理,防止会话劫持等攻击,如果SSO认证中心被攻破,可能会影响到所有与之关联的应用的安全性,不过,SSO认证中心可以采用多因素认证等方式提高安全性。

(三)实现复杂度

1、JWT单点登录

- 在实现JWT单点登录时,主要的复杂度在于JWT的生成、验证以及与各个应用的集成,各个应用需要有相应的代码来处理JWT的验证和用户信息提取,不过,由于JWT的标准性,有许多开源库可以方便地用于JWT的操作,如Java中的JJWT库等。

- 在一个新开发的微服务应用中,如果要采用JWT单点登录,开发人员只需要在每个微服务的入口处添加JWT验证逻辑即可,相对来说代码结构较为清晰,易于实现。

2、SSO单点登录

- SSO单点登录的实现复杂度相对较高,需要建立SSO认证中心,并且要处理好各个应用与SSO认证中心之间的通信、票据管理、会话管理等问题,应用与SSO认证中心之间的集成需要更多的配置和开发工作。

- 在一个企业级应用系统中,如果要实现SSO单点登录,需要考虑不同部门、不同类型应用(如Web应用、移动端应用等)与SSO认证中心的兼容性和集成方式,可能需要投入更多的人力和时间进行开发和测试。

JWT单点登录和SSO单点登录都有各自的特点和适用场景,JWT单点登录更适合于分布式系统、微服务架构等对轻量级、无状态认证有需求的场景;而SSO单点登录则更适合于企业内部多个应用集成,需要集中管理用户会话和权限的场景。

标签: #JWT #SSO #单点登录 #流程图

黑狐家游戏
  • 评论列表

留言评论