目次一、JWT的介绍JWT(JSON Web Tokens)是一种用于在网络应用情况间安全地传输信息的轻便的、URL安全的令牌尺度。JWT的声明一样平常被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增长一些额外的别的业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。 二、JWT的构成JWT的布局分为三部门,它是用点来分割的,Header(头部),Payload(负载),Signature(署名)。如下图 1、Header(头部)头部通常包罗了两部门信息:声明类型和利用什么算法,第一部门就是将json转化为字符串,然后用Base64加密,如下格式 [code]{ "alg":"HS256", "type":"jwt" }[/code]2、Payload(负载)负载内里通常就是我们要传递给前端的值,如用户的一些信息啊,也是将json转换为字符串,然后用Base64加密,如下格式 [code]{ "id":"123", "username":"xiaoming" }[/code]3、Signature(署名)署名的作用是包管JWT的未被篡改。署名的生成方式是将编码后的头部、编码后的负载、秘密通过指定的算法举行署名。署名的作用是包管JWT的发送者不能抵赖自己发送的消息,吸收者能够验证消息的完备性。这里是将前2部门的密文拼接起来,对这2部门举行HS256加密,然后加盐,末了在对加密后的内容用Base64加密一次 三、Python写JWT1、安装Jwt[code]pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PyJWT[/code]2、利用JWT[code]import datetime import jwt def create_jwt(): headers = { 'alg': 'HS256', 'typ': 'JWT' } # jwt的头部,包罗了类型和算法的指定 payload = { "id": 123, "username": '小明', 'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=12), } # jwt的负载,都是一些自界说值,此中exp中的内容是我们指定jwt的一个有用时间,有用时间为12个小时 token = jwt.encode(headers=headers, payload=payload, algorithm='HS256', key='123') # 对上面内容举行加密,这里的key就是加的盐 print(token) if __name__ == '__main__': create_jwt()[/code]3、解密JWT[code]import datetime import jwt def create_jwt(): headers = { 'alg': 'HS256', 'typ': 'JWT' } # jwt的头部,包罗了类型和算法的指定 payload = { "id": 123, "username": '小明', 'exp': datetime.datetime.utcnow() + datetime.timedelta(hours=12), } # jwt的负载,都是一些自界说值,此中exp中的内容是我们指定jwt的一个有用时间,有用时间为12个小时 token = jwt.encode(headers=headers, payload=payload, algorithm='HS256', key='123') # 对上面内容举行加密,这里的key就是加的盐,是自界说的,我们在利用盐的时间一样平常是唯一的一个值 print(token) return token def decode_JWT(token): content = jwt.decode(jwt=token, key='123', algorithms=['HS256']) # 对jwt举行解密,这里用的key必须和上面用的key一样,否则是无法解密出来的 print(content) if __name__ == '__main__': token = create_jwt() decode_JWT(token)[/code]解密出来的结果如下图 总结到此这篇关于Python利用JWT的文章就介绍到这了,更多相干Python利用JWT内容请搜刮脚本之家从前的文章或继承欣赏下面的相干文章希望大家以后多多支持脚本之家! 来源:https://www.jb51.net/python/328949ezk.htm 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|手机版|小黑屋|梦想之都-俊月星空
( 粤ICP备18056059号 )|网站地图
GMT+8, 2025-7-1 16:10 , Processed in 0.036032 second(s), 19 queries .
Powered by Mxzdjyxk! X3.5
© 2001-2025 Discuz! Team.