JWT简介:

 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。因为网络上有很多关于jwt的详细介绍了,所以我这里就不再赘述。但是JWT的大概还是要简要讲一下的。

  众所周知,在现在的互联网世界中,越来越多的网站之间因为业务关系需要频繁的跨域互相访问,但是由于HTTP协议的同源策略,在跨域访问中如何携带用户个人信息认证就是一个大问题了。为了安全,cookie是只能在同域名下才能作用,这也使之前一直常用的session和cookie来保持用户状态的机制在这种情况下无能为力。而JWT也由此应运而生,越来越多的应用在了大型网站的单点登录中了。

  简单叙述一下jwt的构成,jwt总共由3个部分构成,分别是header头部,用来存储该token的加密方式和一些简介。payload部分,用来存储用户的非敏感信息和一些因为业务需要所需的数据。而header和payload都是json格式的数据,通过可以互相转化的base64转码成字符串,这也是为什么在token中不要携带用户敏感信息的圆心。最后的部分是signature,它由保存在公司内部的密钥和前面的header还有payload通过header部分里声明的加密方式以及一些加盐操作加密而成。三个部分分别用 . 隔开,最终形成header.payload.signature这个形式。

header:
{
'typ': 'JWT',
'alg': 'HS256'
} base64(header) --> eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 payload:
{
"sub": "",
"name": "John Doe",
"admin": true
} base64(payload) --> eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9 最终组成 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

  JWT是在用户注册或者登陆之后通过服务器签发给客户端,大部分客户端通过localstorage来存储token,这样就可以在前端发起请求时主动携带上token,然后服务器接收之后通过验证来判断该用户的认证信息了。也有少部分客户端是将token存储在cookie中的,在此不谈。

  那么今天要谈的问题来了,因为token是存储在客户端的,那么就表示着一旦服务器在签发token之后,除了等待token到时限失效之外失去了管控token的能力。一旦客户端token丢失等情况发生,就会产生用户安全问题。

  解决方案:

  服务器在用户第一次登陆或者注册成功后在签发token时可以给该token配置一个token_id,并保存到服务器的redis或者mysql数据库中。用户在访问时如果携带了token便需要先经过token_id的校验,再进行后面用户身份信息的校验。一旦用户发起安全申请,便立即删除服务器保存的token_id,而用户携带的token在token_id这个步骤的校验失败之后便会跳转到登录界面,由服务器重新签发token。

关于JWTtoken的管理问题的更多相关文章

  1. Dubbo学习系列之九(Shiro+JWT权限管理)

    村长让小王给村里各系统来一套SSO方案做整合,隔壁的陈家村流行使用Session+认证中心方法,但小王想尝试点新鲜的,于是想到了JWT方案,那JWT是啥呢?JavaWebToken简称JWT,就是一个 ...

  2. spring-boot-plus集成Shiro+JWT权限管理

    SpringBoot+Shiro+JWT权限管理 Shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理. 使用Shiro的易于理解的API,您可以 ...

  3. .Net Core 认证系统之基于Identity Server4 Token的JwtToken认证源码解析

    介绍JwtToken认证之前,必须要掌握.Net Core认证系统的核心原理,如果你还不了解,请参考.Net Core 认证组件源码解析,且必须对jwt有基本的了解,如果不知道,请百度.最重要的是你还 ...

  4. 权限管理3-整合Spring Security

    一.Spring Security介绍 1.框架介绍 Spring 是一个非常流行和成功的 Java 应用开发框架.Spring Security 基于 Spring 框架,提供了一套 Web 应用安 ...

  5. 【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token

    问题描述 在APIM中配置对传入的Token进行预验证,确保传入后端被保护的API的Authorization信息正确有效,可以使用validate-jwt策略.validate-jwt 策略强制要求 ...

  6. PowerDotNet平台化软件架构设计与实现系列(12):HCRM人员管理平台

    技术服务于业务,良好的技术设计和实现能够大幅提升业务质量和效率. PowerDotNet已经形成了自己的开发风格,很多项目已被应用于生产环境,可行性可用性可靠性都得到了生产环境验证. 编程是非常讲究动 ...

  7. .NET Core中的认证管理解析

    .NET Core中的认证管理解析 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册.登录等很多页面,也可 ...

  8. npm 私有模块的管理使用

    你可以使用 NPM 命令行工具来管理你在 NPM 仓库的私有模块代码,这使得在项目中使用公共模块变的更加方便. 开始前的工作 你需要一个 2.7.0 以上版本的 npm ,并且需要有一个可以登陆 np ...

  9. Spring基于AOP的事务管理

                                  Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...

随机推荐

  1. m个小朋友手拉手站成一个圈,从第k个小朋友开始报数,报到n的那个小朋友退到圈外,然后他的下一位重新报“1”。这样继续下去,直到只剩下一个小朋友,求解这个小朋友原来站什么地方。

    约瑟夫环问题. package pack; import java.util.*; public class demo_2 { static int a[]; public static void m ...

  2. RabbitMQ全网资料收集

    RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准 ...

  3. XSS(四)攻击防御

    XSS Filter XSS Filter的作用是过滤用户(客户端)提交的有害信息,从而达到防范XSS攻击的效果 XSS Filter作为防御跨站攻击的主要手段之一,已经广泛应用在各类Web系统之中, ...

  4. proxmox网络

    root@t1:~# cat /etc/network/interfaces# network interface settings; autogenerated# Please do NOT mod ...

  5. create-react-app源码解读之为什么不搞个山寨版的create-react-app呢?

    最近把 vue-cli@2.x 和 create-react-app 的源码都看了一遍.由于现在官方推荐使用 vue-cli@3.0 ,改动比较大,所以就不写关于 vue-cli 的了(据说是因为 v ...

  6. 记一次node进程无法kill 问题

    起因 开发反馈测试环境某 node 进程使用 pm2 log 查看日志提示端口冲突,pm2 restart 重启进程问题依旧,但该服务可正常访问. 处理过程: 访问该服务 URL 业务正常,查看 Ng ...

  7. 剑指offer 7. 递归和循环 斐波那契数列

    题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 简简单单 废话不多说,直接上代码: public class Sol ...

  8. Hadoop 2.x 版本的单机模式安装

    Hadoop 2.x 版本比起之前的版本在Hadoop和MapReduce上做了许多变化,主要的变化之一,是JobTracker被ResourceManager和ApplicationManager所 ...

  9. 使用git进行版本控制

    一.git基本介绍 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git是目前世界上最先进的分布式版本控制系统. 与常用的版本控制工具 CVS, Subversion 等 ...

  10. input框在浏览器上显示一个叉,去掉方法

    /* 清除IE10及以上版本input的叉叉(X)和密码输入框的眼睛图标 */ input::-ms-clear { display: none; } input::-ms-reveal { disp ...