内容简介:JWT(Json Web Token):是目前最流行的跨域身份验证解决方案。此前我们使用的身份验证方式都是基于Session:
JWT(Json Web Token):是目前最流行的跨域身份验证解决方案。
此前我们使用的身份验证方式都是基于Session:
这种方式并没有什么不妥,但其实这里有三个缺点:
- Session一般存储在 redis 中,而redis数据保存在内存中,随着用户的增多,内存消耗太大。
- 扩展性不好,用户每次验证都需要请求session服务器,增大了负载均衡能力,应用扩展受限。
- 因为是基于cookie来进行用户识别的, cookie如果被截获,用户就会很容易受到跨站请求伪造的攻击。
所以,我们需要一种既能实现相同要求并且还要比session存储更有效的身份验证方式。
JWT通过一种加密的方式,将加密后的数据保存返回给用户本地进行保存,我们称为token数据。其数据由三部分组成:
1、header声明类型和加密的算法:
{
'typ': 'JWT', #固定值
'alg': 'HS256' #加密算法
}
2、payload负载
这是有效信息的存放地方,其分为三部分:标准中注册的声明、公共声明、私有声明(用户信息)
标准中的注册声明(有需要在使用,不强制使用):
iss: jwt签发者
sub: jwt所面向的用户
aud: 接收jwt的一方
exp: jwt的过期时间,这个过期时间必须要大于签发时间
nbf: 定义在什么时间之前,该jwt都是不可用的.
iat: jwt的签发时间
jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。
公共声明:公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息.
私有声明:
{
"name": "jim",
"id": "111111",
"admin": true
}
3、signature签名
需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分。由于base64是对称加密算法,所以可以轻松解密:因此我们在负载部分不要将私密信息放置在里面,只需要把能验证唯一的标识信息添加就可以了。
有关base64,请参考: https://www.liaoxuefeng.com/w...
由于目前在学习DRF,所以我介绍一下怎样在DRF项目中使用JWT进行身份验证:
安装djangorestframework-jwt:
pip install djangorestframework-jwt
添加jwt认证类:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.BasicAuthentication',
),
}
添加jwt路由用于生成token:
from rest_framework_jwt.views import obtain_jwt_token
urlpatterns = [
url(r'^自己的路由/', obtain_jwt_token),
]
然后我们就可以通过自己添加的路由并通过post添加username和password来获取到token了,在进行访问页面的时候我们只需要在请求头中添加一个: Authorization: JWT <your_token> ,就可以得到验证了。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 表单正则验证及文件上传验证功能
- angular 实现同步验证器跨字段验证
- Spring Security验证流程剖析及自定义验证方法
- TensorFlow 推出数据验证函数库 TFDV,用于分析和验证
- TensorFlow 推出数据验证函数库 TFDV,用于分析和验证
- 滑动验证码的原理并利用 Vue 实现滑动验证码
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Algorithms for Image Processing and Computer Vision
Parker, J. R. / 2010-12 / 687.00元
A cookbook of algorithms for common image processing applications Thanks to advances in computer hardware and software, algorithms have been developed that support sophisticated image processing with......一起来看看 《Algorithms for Image Processing and Computer Vision》 这本书的介绍吧!