1分钟让你快速搞懂Session,Jwt,SSO,OAuth

研发玩点艰辛事 2024-03-05 14:18:13

Session,Jwt,SSO,OAuth的执行流程图示

1)首先认证和授权我们需要分清

认证(Authentication):知道 ta 是谁

授权(Authorization):知道 ta 有没有权限对资源执行试图执行的操作.

2)Session,Jwt,SSO,OAuth之间的关系和联系.

2.1)SSO 可以借助 OAuth2.0 完成了「授权」,但「认证」这一步还需要靠引入 IdP 来实现。

2.2)SSO,OAuth,Session,Jwt的关系 。

SSO和OAuth2.0的关系

3)几个概念快速了解

3.1)session

客户端http请求服务端,服务端会为这次请求开辟一块内存空间,这个对象便是 Session 对象,存储结构为 ConcurrentHashMap。Session 弥补了 HTTP 无状态特性,服务器可以利用 Session 存储客户端在同一个会话期间的一些操作记录。

Session 机制有个缺点,比如 A 服务器存储了 Session,就是做了负载均衡后,假如一段时间内 A 的访问量激增,会转发到 B 进行访问,但是 B 服务器并没有存储 A 的 Session,会导致 Session 的失效。另外session实际利用了cookie存储session_id,不利于跨域等处理。

3.2)jwttoken

jwttoken令牌,是用户身份的验证方式。 最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)。 对Token认证的五点认识

一个Token就是一些信息的集合;

在Token中包含足够多的信息,以便在后续请求中减少查询数据库的几率;

服务端需要对cookie和HTTP Authrorization Header进行Token信息的检查;

基于上一点,你可以用一套token认证代码来面对浏览器类客户端和非浏览器类客户端;

因为token是被签名的,所以我们可以认为一个可以解码认证通过的token是由我们系统发放的,其中带的信息是合法有效的;

3.3)Sso:

SSO(Single Sign On,单点登录)是指一种思想或服务,用户只需使用一次登录凭据就可以访问其他所有被授予权限的应用。

SSO 在引入身份提供商后,用户也成为了等待被认证、被授权的主体。

3.4)OAuth

OAuth2.0 是一种关于授权的开放网络标准,允许用户在一个站点向其他站点授予对其资源的有限访问权限,而无需获得其凭证。

OAuth2.0有多种模式,这里讲的是OAuth2.0授权码模式,OAuth2.0的流程跟SSO差不多,在OAuth2中,有授权服务器、资源服务器、客户端这样几个角色,当我们用它来实现SSO的时候是不需要资源服务器这个角色的,有授权服务器和客户端就够了。授权服务器当然是用来做认证的,客户端就是各个应用系统,我们只需要登录成功后拿到用户信息以及用户所拥有的权限即可.

0 阅读:0

研发玩点艰辛事

简介:感谢大家的关注