首先简要介绍一下什么JWT(JSON Web Token)。

JWT是一种开放的,工业标准的规范,用于在两个应用之间安全地传输信息。

JWT由3个部分组成,分别是头部、载荷、签名。

头部部分

{
  "alg": "HS256",
  "typ": "JWT"
}

alg描述的是签名算法。

载荷部分

{
  "iss": "发行者",
  "sub": 主题",
  "aud": “观众”,

"exp":"过期时间",

"iat":"签发时间"

以下可以添加自定义数据

"userid":"11111",

“realname":"真实姓名",

"email":"",
}

Base64算法是可逆的,不可以在载荷部分保存用户密码等敏感信息。如果业务需要,也可以采用对称密钥加密。

签名部分

HMACSHA256(Base64(Header) + "." + Base64(Payload),  secret)

签名的目的是用来验证头部和载荷是否被非法篡改。

验签过程描述:读取Header部分并Base64解码,得到签名算法。根据以上方法算出签名,如果签名信息不一致,说明是非法的。

JWT的基本原理介绍完毕,接下来描述如何基于JWT设计单点登录系统。

假设现在有系统www.example.com, passport.example.com.

用户首先访问passport.example.com,在表单输入用户名和密码,通过HTTPS Post提交请求到后端认证服务,后端认证服务查询用户数据库完成用户认证。

用户 认证成功后,假设只在Payload部分保存userid,生成Token ( Base64(header) + "." + Base64(payload) + "." + Base64(sign) ),作为cookie返回给客户端,

cookie保存在根域example.com。

用户访问www.example.com,会自动带上Token cookie。

后端服务需要完成Token的验签,过期时间判断等操作。验证成功就可以读取Payload信息完成接下来的业务功能。

参考资料

https://jwt.io/

基于JSON Web Tokens的单点登录(SSO)或通行证(Passport)系统方案相关推荐

  1. 基于IdentityServer4的OIDC实现单点登录(SSO)原理简析

     # 写在前面 IdentityServer4的学习断断续续,兜兜转转,走了不少弯路,也花了不少时间.可能是因为没有阅读源码,也没有特别系统的学习资料,相关文章很多园子里的大佬都有涉及,有系列文章 ...

  2. 使用JSON Web Token设计单点登录系统--转

    原文地址:https://leon_lizi.gitbooks.io/json-web-token/content/chapter2.html 用户认证八步走 所谓用户认证(Authenticatio ...

  3. 使用Spring Security OAuth2实现单点登录(SSO)系统

    一.单点登录SSO介绍   目前每家企业或者平台都存在不止一套系统,由于历史原因每套系统采购于不同厂商,所以系统间都是相互独立的,都有自己的用户鉴权认证体系,当用户进行登录系统时,不得不记住每套系统的 ...

  4. 基于.Net的单点登录(SSO)解决方案

    基于.Net的单点登录(SSO)解决方案 前些天一位朋友要我帮忙做一单点登录,其实这个概念早已耳熟能详,但实际应用很少,难得最近轻闲,于是决定通过本文来详细描述一个SSO解决方案,希望对大家有所帮助. ...

  5. 基于云端的通用权限管理系统,SAAS服务,基于SAAS的权限管理,基于SAAS的单点登录SSO,企业单点登录,企业系统监控,企业授权认证中心...

    基于云端的通用权限管理系统 SAAS服务 基于SAAS的权限管理 基于SAAS的单点登录SSO 基于.Net的SSO,单点登录系统,提供SAAS服务 基于Extjs 4.2 的企业信息管理系统 基于E ...

  6. 登录授权方案:JSON Web Tokens (JWT)

    登录授权方案:JSON Web Tokens (JWT) JWT官方文档:https://jwt.io/introduction 1.简介: JWT 即 json web tokens,通过JSON形 ...

  7. 关于Spring Security框架 关于单点登录sso

    1.Spring Security的作用 Spring Security主要解决了认证和授权相关的问题. 认证(Authenticate):验证用户身份,即登录. 授权(Authorize):允许用户 ...

  8. 10_单点登录SSO

    是什么 在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己 的账号登录,很方便.但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要 ...

  9. 单点登录(SSO)详解

    文章目录 前言 一.单点登录是什么? 二.单点登录的实现方式 1.Cookie方案: 2.Session方案: 3.Token方案: 三.JWT是什么 1.JWT的概况 2.JWT的组成 3.JWT的 ...

最新文章

  1. java_OA管理系统(一):Servlet总结案例仿网络聊天室
  2. 利率计算中的套路!用 Python 告诉你究竟亏了多少!
  3. Junit中测试插入等无返回值的操作要注意的问题
  4. 随机产生单词java_关于java:如何创建随机单词选择器方法
  5. 查询程序崩溃日志_PC 崩溃报告途径 amp; 临时解决方法
  6. 安装Python psutil包
  7. java ztree_ztree简介_动力节点Java学院整理
  8. 【纪念】NOIP2018前夕——一些想说的话
  9. 宝塔linux跑tomcat,宝塔面板环境的安装(Linux、Tomcat、Node.js、Windows等环境)
  10. MagicDraw 18.5 SP4
  11. Windows 7下手动搭建Asp和PHP集成环境
  12. 计算机属性资源管理器已停止工作,Win7资源管理器老是停止工作怎么办?资源管理器已停止工作解决方法...
  13. 三位数的水仙花数有哪些?
  14. 百度地图和百度导航冲突问题
  15. linux bin sh命令,linux shell中#!bin/sh的理解
  16. 华农大学计算机专硕,华南农业大学电子工程学院(人工智能学院)林芳老师课题组招收计算机方向学硕及专硕...
  17. no moudle named sklearn-impute
  18. 自己动手搭建搜索工具
  19. 【论文翻译】基于图关注网络的异构网络类型感知锚链路预测
  20. 魅族Android10内测招募答案,魅族flyme9内测招募答案,魅族16系列flyme9内测招募题目答案免费分享预约 v1.0-手游汇...

热门文章

  1. ParallaxView
  2. AIX性能管理指南-luoqiangb@dc
  3. wojilu系统的ORM介绍
  4. 数据库异常关闭后无法启动问题处理
  5. dot net操作sql服务器大全
  6. POJ - 1190 生日蛋糕(dfs+剪枝)
  7. PoolFormer解读
  8. java第五章 多线程_java多线程编程核心技术——第五章总结
  9. 无法想mysql进行插入_mysql 无法插入中文
  10. 缓冲区溢出漏洞攻击——Shellcode编写