单点登录JWT

比较主流的方案有几种:

  1. 用户名和密码鉴权,使用Session保存用户鉴权结果。---依赖session不适用移动应用
  2. 使用OAuth进行鉴权(其实OAuth也是一种基于Token的鉴权,只是没有规定Token的生成方式)---对于非开放平台有些过于复杂
  3. 自行采用Token进行鉴权---JWT

JWT Json Web Token

    JWT是基于RFC 7519标准定义的一种可以安全传输的小巧合自包含的JSON对象。由于数据使用数字签名的,所以是可信任和安全的。

    JWT只不过提供了一种基于token的请求验证机制,用户权限,对于API的权限划分、资源的权限划分,用户的验证等等都不是JWT负责的,

工作流程

1 用户导航到登录页面,输入用户名,密码,进行登录

2 服务器验证登录鉴权,如果该用户合法,根据用户的信息和服务器的规则生成JWT Token

3 服务器将该token以json形式返回(不一定json的形式,只是常见的做法)

4 用户得到token,存在localStorage,cookie或其他数据存储形式中。

5 以后用户请求 、protected中的API时,在请求header中加入Authorization:Bearer xxx(token)。注意token之前有一个7字符长度的Bearer。

6 服务器端对此token进行检查,如果合法就解析其中内容,根据其拥有的权限和自己的业务逻辑给出对应的响应结果。

7 用户取得结果

 

单点登录:提升产品使用的便利性,分离了各个服务都需要的登录服务,对性能以及工作量都有好处。

JWT用途:3种web会话管理方式,JWT实现token-based会话管理。

BJWT SSO实现原理时序图,模拟了三个服务,分别是CAS、系统A、系统B、分别部署在cas、systemA.com、systemB.com;CAS这个服务用来管理SSO的会话;系统A和系统B分别代表业务系统。

场景一

sso_1

关键点:

1 用到两个cookie(JWT和SID)、三次重定向来完成会话的创建和会话的传递;

2 JWT的cookie是写在systemA.com这个域下的,所以每次重定向到systemA.com的时候,jwt这个cookie只要有就会带过去;

3 验证jwt的时候,知道当前用户创建sso的会话,因为jwt的padload里面存储了之前创建sso会话的session id,所以当cas拿到jwt就相当于拿到了seesion id,然后这个session id 去判断有没有对应的session对象

转载于:https://my.oschina.net/yangty2017/blog/1787293

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值