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的时候是不需要资源服务器这个角色的,有授权服务器和客户端就够了。授权服务器当然是用来做认证的,客户端就是各个应用系统,我们只需要登录成功后拿到用户信息以及用户所拥有的权限即可.