Token令牌管理权限
什么是token
HTTP是一种无状态的协议,也就是HTTP没法保存客户端的信息,没办法区分每次请求的不同。
Token是服务器生成的一串字符,作为客户端请求的令牌。当第一次登陆后,服务器会分发Tonken字符串给客户端。后续的请求,客户端只需带上这个Token,服务器即可知道是该用户的访问。
使用Tonken,可以实现:权限管理、身份验证、防止同一账号异地登录。
Token的验证过程
1.客户端:用户名和密码请求登录
2.服务器:收到请求,验证用户名和密码,验证成功后,分发一个Token返回给客户端
3.客户端:将Token存储,例如放在 Cookie 里或者 Local Storage 里,后续每次请求,带上此Token
4.服务器:收到请求,验证Token是否正确,验证成功返回请求数据
基于PHP实现token令牌管理权限
1.生成方法
头部:加密类型
说明:消息内容
key:一个随机码用来加密
上面三部分使用.连接起来,然后使用hs256进行加密,生成tokent
2.详细生成方法
- 头部通常由两部分组成:令牌的类型(即JWT)和所使用的加密算法(如:SHA256或者RSA)
{
"alg": "HS256",
"typ": "JWT"
}
然后,这个json被Base64Url编码,成为第一部分
- 有效载荷是声明。声明是关于实体的部分。
{
"exp": "1525785339",
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
然后将有效载荷Base64Url进行编码,成为第二部分
(PS:此信息尽管受到篡改保护,但是任何人都可以阅读。除非加密,否则不要将重要信息放在里面)
使用一个加密key
签名,需要使用编码后的第一部分,编码后的第二部分,然后一个关键的key。采用第一部分里的加密算法进行签名
HMACSHA256(
base64UrlEncode(header) + "." + base64UrlEncode(payload),
key
)
该签名用于验证消息是否有篡改。
(PHP使用crypt方法进行加密。注意:SHA-256用于防篡改,AES-256用于加密两个概念不一样)
- token存放位置
通常应该在请求的header头中的 Authorization字段使用 Bearer模式添加JWT(Authorization: Bearer ) (当然你也可以放在任意位置,如URL后面当成一个参数传递,只要客户端能识别就行,不过既然JWT是个规范,那么我们最好还是按照规范来)
4.使用方式
- 客户端用户输入用户名密码后执行登录,请求token
- 服务器收到请求后,使用JWT这种规范,进行生成token,返回给客户端
- 客户端收到token以后,解密后,验证token的时效性(token的过期时间),保存起来
- 客户端拿token请求数据
- 服务器收到token解密后,验证用户身份,验证时效性,然后验证用户
5.缺点
- 无法作废已颁布的令牌(对token刷新使用期限)
- 不易应对过期数据(支持 token 失效)
- 所以如果你使用了 token ,那么如果 token 被捕获到,那么就可以进行伪造进行冒充。所以如果安全比较高的话,还是建议使用oauth2
参考;http://ukagaka.github.io/php/2018/05/08/JWT.html
Token令牌管理权限的更多相关文章
- .NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制
项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩过webAPI,但是领导要求必须用这个(具体原因鬼知道),只好硬着头皮上了. 最近刚做完权限这一块,分享出来给大家.欢 ...
- WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制
.NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制 项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩 ...
- 如何使用Defender优雅的管理权限?
何为权限管理 权限管理已经不知不觉深入到了我们生活的每一个角落,例如地铁进站的闸机,高速公路上的过路费,停车场的杠杆等等等等. 作为一名开发人员,权限二字对我们的映像更加深刻,无论任何系统,都多多少少 ...
- NETCore Bootstrap Admin 通用后台管理权限 [3]: 精简版任务调度模块
前言 NETCore 里说到任务调度,大家首先想到的应该是大名鼎鼎的 QuartzNET 与 Hangfire,然而本篇介绍的却都不是,而是 Bootstrap Admin(以下简称 BA)通用后台权 ...
- 在ASP.NET Web API 2中使用Owin基于Token令牌的身份验证
基于令牌的身份验证 基于令牌的身份验证主要区别于以前常用的常用的基于cookie的身份验证,基于cookie的身份验证在B/S架构中使用比较多,但是在Web Api中因其特殊性,基于cookie的身份 ...
- 接口认证:Bearer Token(Token 令牌)
因为HTTP协议是开放的,可以任人调用.所以,如果接口不希望被随意调用,就需要做访问权限的控制,认证是好的用户,才允许调用API. 目前主流的访问权限控制/认证模式有以下几种: 1)Bearer To ...
- java:struts框架3(自定义拦截器,token令牌,文件上传和下载(单/多))
1.自定义拦截器: struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...
- Security基础(一):Linux基本防护措施、使用sudo分配管理权限、提高SSH服务安全
一.Linux基本防护措施 目标: 本案例要求练习Linux系统的基本防护措施,完成以下任务: 修改用户zhangsan的账号属性,设置为2015-12-31日失效(禁止登录) 锁定用户lisi的账户 ...
- 五、kubernetes节点与令牌管理
Kubernetes节点与令牌管理 一.令牌管理 查看令牌 [root@master ~]# kubeadm token list 删除令牌 [root@master ~]# kubeadm toke ...
随机推荐
- lr 函数--lr_save_string
lr_eval_string 返回脚本中一个参数当前的值 Returns the string argument after evaluating embedded parameters.一般都用 ...
- Python学习之路——三元运算符推导式
三元运算符 # 生成器:包含yield关键字的函数就是生成器 def my_generator(): yield 1 yield 2 yield 3 g_obj = my_generator() # ...
- HttpPost方式调用接口的3种方式
第一种:需要httpclient的依赖包 <dependency> <groupId>org.apache.httpcomponents</groupId> < ...
- Debugging Beyond Visual Studio – WinDbg
Getting started with WinDbg: 1. Download the Debugging Tools for Windows from the Microsoft website ...
- Qin Shi Huang's National Road System HDU - 4081(树形dp+最小生成树)
Qin Shi Huang's National Road System HDU - 4081 感觉这道题和hdu4756很像... 求最小生成树里面删去一边E1 再加一边E2 求该边两顶点权值和除以 ...
- cglib 代理实现
cglib代理的原理是通过继承实现对目标对象的代理 //1.接口 package cn.itcast.service; public interface UserService { void save ...
- 【XSY3147】子集计数 DFT 组合数学
题目大意 给定一个集合 \(\{1,2,\ldots,n\}\),要求你从中选出 \(m\) 个数,且这 \(m\) 个数的和是 \(k\).问方案数 \(\bmod 998244353\) \(0\ ...
- 用beam实现连接kafka和elasticSearch示例 在flink平台运行
示例实现beam用java编程,监听kafka的testmsg主题,然后将收取到的单词,按5秒做一次统计.结果输出到outputmessage 的kafka主题,同时同步到elasticSearch. ...
- Cucumber环境配置
1.JDK下载和配置 2.Maven下载和环境配置 3.IDEA下载和Cucumber插件安装 下载地址官网,一般IDEA自带cucumber插件 如果没有安装过的话,点击以下进行搜索安装,安装完成后 ...
- Mybatis-批量执行
一.使用动态SQL 中的 Foreach 批量插入 1.MySQL // 实体类 public class MyUser { private Integer id; private String na ...