Token

转:什么是Token(令牌)-菜鸟笔记

关于Token 登录:Token登录认证

简单介绍

  • 访问资源接口(API)时所需要的资源凭证

  • 简单token 的组成: uid(用户唯一的身份标识) 、time (当前时间的时间戳) ,sign(签名,token的前几位以hash算法压缩成的一定长度的16进制字符串)

  • 特点

    • 服务端无状态变化、可扩展性好

    • 支持移动端设备

    • 安全

    • 支持跨域程序调用

    • token 的身份验证流程

      • 1、客户端使用用户名和密码进行登录
      • 2、服务端收到请求,去验证用户名与密码
      • 3、验证成功后,服务端会签发一个token 并把这个token 发送给客户端
      • 4、客户端收到token后,会把它存储起来,比如放在cookie 里 或者 localStorage里
      • 5、客户端每次向服务端请求资源的时候需要带着服务端签发的token
      • 6、服务端收到请求后,先验证客户端请求里带着的token ,如果验证成功,就向客户端返回请求的数据
      • 优点:
        • 每一次请求都需要携带token ,需要把token 放到HTTP的Header 里
        • 基于token 的用户验证是一种服务端无状态的认证方式,服务端不用存放token数据,用解析token的计算时间换取 session的存储空间,从而减轻服务器的压力,减少频繁的查询数据库
        • token 完全由应用管理,所以它可以避开同源策略
      • Token生成示例
        使用用户唯一ID + 系统时间 + 随机数 + 过期时间得到用户信息数据,对用户信息数据进行RSA非对称加密/AES对称加密得到一个加密字符串A,将加密字符串A再次进行签名等到一个签名数据。然后将签名数据和加密字符串进行拼接,最后使用base64进行编码,得到最终的token令牌。
        /**** @param tokenBody 实例对象,通常为bean* @param minute 过期时间   单位:min* @param <T>* @return*/
      public static <T> String createToken(T tokenBody, int minute) {long now = System.currentTimeMillis() / 1000;Gson gson = new Gson();JsonObject jsonBody = new JsonObject();jsonBody.addProperty("body", gson.toJson(tokenBody));String randomAlphabetic = RandomStringUtils.randomAlphabetic(3);JsonObject jsonHeader = new JsonObject();jsonHeader.addProperty("now", now);jsonHeader.addProperty("rand_num", randomAlphabetic);jsonHeader.addProperty("expire", (now + minute * 60));String token = null;try {byte[] encryptContent = generateEncryptBody(jsonHeader.toString(), jsonHeader.toString());byte[] signWithEncrypt = generateSignWithEncrypt(encryptContent);token = Joiner.on(".").join(new String[]{base64Encoder(jsonHeader.toString().getBytes("utf-8")),base64Encoder(encryptContent),base64Encoder(signWithEncrypt)});} catch (Exception e) {e.printStackTrace();}return token;
      }

    常见的鉴权模式

    • session-Cookie
    • Token验证(JWT SSO单点登录)
    • OAuth2.0 (开放授权)
  • JWT 与 Token 的区别

    • 相同:

      • 都是访问资源的令牌
      • 都可以记录用户的信息
      • 都是使服务端无状态变化
      • 都是验证成功后,客户端才能访问服务端上受保护的资源
  • 区别

    • Token: 服务端验证客户端发送过来的Token 时,还需要查询数据库获取用户信息,然后验证Token 是否有效
    • JWT: 将token 和 Payload 加密后存储于客户端,服务端只需要使用秘钥进行校验即可,不需要查询或者减少查询数据库,因为JWT自包含了用户信息和加密的数据

Token 认证登录相关推荐

  1. springboot+shiro+jwt实现token认证登录

    准备: springboot 2.5.5 jdk 1.8 没有操作刷新token功能,也没有放redis做缓存 1.先贴代码 2.后讲一下验证逻辑 1.导入依赖 <!--shiro-->& ...

  2. vue接口token认证登录(加手机验证)

    做一样东西就尽可能把他做好,因为人有[保存体力的天性],一旦成型,很不想花时间去改 ------从自己身上总结 需求:用户没有登录不能跳转任何页面,只能登录 实现思路:用户登录,后端验证,返回toke ...

  3. 【人人开源】集成通过Token认证统一登录功能

    [人人开源]集成通过Token认证统一登录功能 后端 https://gitee.com/renrenio/renren-fast 前端 https://gitee.com/renrenio/renr ...

  4. Java实现Token登录验证(基于JWT的token认证实现)

    文章目录 一.JWT是什么? 二.使用步骤 1.项目结构 2.相关依赖 3.数据库 4.相关代码 三.测试结果 一.JWT是什么? 在介绍JWT之前,我们先来回顾一下利用token进行用户身份验证的流 ...

  5. spring security 自定义认证登录

    spring security 自定义认证登录 1.概要 1.1.简介 spring security是一种基于 Spring AOP 和 Servlet 过滤器的安全框架,以此来管理权限认证等. 1 ...

  6. 路由守卫 AJAX,vue路由导航守卫 和 请求拦截以及基于node的token认证

    #####什么时候需要登录验证与权限控制 1.业务系统通常需要登录才能访问受限资源,在用户未登录情况下访问受限资源需要重定向到登录页面: 2.多个业务系统之间要实现单点登录,即在一个系统或应用已登录的 ...

  7. 常用的认证机制之session认证和token认证

    一.session认证 1.session认证的过程: 前端输入用户名和密码进行登录操作,后端拿到用户名和密码后,会把md5进行加密,加密之后,拿上加密后的密文到用户表中查找密文是否一致,判断用户是否 ...

  8. drcom宽带认证登录超时_开发SSO单点登录需要注意的问题

    一.单点登录系统开发需要注意的问题 1.单点登录系统需要支持jsonp请求? 单点登录系统主要是向其他系统提供用户身份验证服务,因此需要提供对外接口,而外部系统通过接口访问时,必然涉及跨域问题,因此需 ...

  9. Token 认证的来龙去脉,DRF认证,DRF权限,DRF限制

    上一章节内容回顾:1.五个葫芦娃和三行代码 APIView(views.View)1.封装了Django的request- request.query_params --> 取URL中的参数- ...

最新文章

  1. 分布式锁能解决 mysql死锁吗_mysql死锁问题分析
  2. c 语言new运算符重载,c – 当我们重载new运算符时,是否需要重载放置new运算符?...
  3. 强化学习的数学基础3---Q-Learning
  4. delphi win64 DEBUG不能进预设断点的问题
  5. kafka搭建、学习(一)
  6. CSS-返回顶部代码
  7. 关于java中的httpsession_JavaWeb——HttpSession
  8. 【Python游戏】Python基于pygame和random模块开发的一个拼图小游戏 | 附带源码
  9. 大数据预测模型的深度学习导论
  10. 曲线运动与万有引力公式_【知识总结】物理必修二曲线运动与万有引力相关公式和规律...
  11. 企业单位申请代码签名证书方法
  12. u8云服务器系统管理,用友u8连云服务器
  13. 开放平台-百度开放平台:百度开放平台
  14. php判断caj文件页数,CAJ转Word有没有既免费还不限制页数的转换工具?
  15. 一、Synchronized详解与锁升级
  16. 自旋锁为什么不适用于单处理器系统
  17. Makefile3、书写规则(文件搜寻、伪目标、多目标、静态模式、自动生成依赖性)
  18. 海尔张瑞敏的十三个观点
  19. 2步开启Safari审查元素
  20. 让我搞得脑壳痛的is和==

热门文章

  1. matlab求正交向量组
  2. Kingfisher 5.13~ UIImageView、UIButton类扩展加载 网络图片
  3. 表的操作--创建表(简单)
  4. 8本最受欢迎的Python技术书,你看过几本?
  5. Ubuntu修改时区为UTC/CST时间
  6. 干货来了丨四大板块构建纵深防御体系,保障工业网络安全
  7. 网络重置后无法上网,以太网和无线网全部丢失,网络适配器出现“56”错误码
  8. 尼古拉·特斯拉(膜拜伟人)转自百度百科
  9. 我见过的最大的Flash游戏,最有意思的Puzzle类游戏
  10. 自动驾驶算法详解(3): LQR算法进行轨迹跟踪,lqr_speed_steering_control( )的python实现