生成和验证json web令牌的模块

python_jwt的Python项目详细描述


Pythonjwt Build StatusCoverage StatusPyPI version

用于生成和验证JSON Web Tokens的模块。

  • 注意:从2.0.1版开始,命名空间已从jwt更改为python_jwt,以避免与PyJWT冲突。
  • 注意:版本1.0.0及更高版本修复了json web令牌验证中的a vulnerability,因此如果您使用此功能,请升级。API已更改,因此需要更新应用程序。verify_jwt现在要求您指定允许哪些签名算法。
  • jwcrypto来做重吊。
  • 支持RS256, RS384, RS512PS256, PS384, PS512HS256, HS384, HS512none签名算法。
  • 单元测试,包括与node-jsjws的互操作性测试。
  • 支持Python3.6。注意:generate_jwt以unicode字符串的形式返回标记,即使在python 2.7上也是如此。

示例:

importpython_jwtasjwt,jwcrypto.jwkasjwk,datetimekey=jwk.JWK.generate(kty='RSA',size=2048)payload={'foo':'bar','wup':90};token=jwt.generate_jwt(payload,key,'PS256',datetime.timedelta(minutes=5))header,claims=jwt.verify_jwt(token,key,['PS256'])forkinpayload:assertclaims[k]==payload[k]

api描述为here

安装

pip install python_jwt

另一个例子

您可以在PEM-format字符串之间读写键:

importpython_jwtasjwt,jwcrypto.jwkasjwk,datetimekey=jwk.JWK.generate(kty='RSA',size=2048)priv_pem=key.export_to_pem(private_key=True,password=None)pub_pem=key.export_to_pem()payload={'foo':'bar','wup':90};priv_key=jwk.JWK.from_pem(priv_pem)pub_key=jwk.JWK.from_pem(pub_pem)token=jwt.generate_jwt(payload,priv_key,'RS256',datetime.timedelta(minutes=5))header,claims=jwt.verify_jwt(token,pub_key,['RS256'])forkinpayload:assertclaims[k]==payload[k]

许可证

MIT

测试

make test

棉绒

make lint

代码覆盖率

make coverage

coverage.py结果可用here

工作服页面是here

基准

make bench

下面是在运行Ubuntu17.04的英特尔酷睿i5-4300m2.6GHz处理器和8GB内存的笔记本电脑上的一些结果。

Generate Keyuser (ns)sys (ns)real (ns)
RSA103,100,000200,000103,341,537
Generate Tokenuser (ns)sys (ns)real (ns)
HS256220,0000226,478
HS384220,0000218,233
HS512230,0000225,823
PS2561,530,00010,0001,536,235
PS3841,550,00001,549,844
PS5121,520,00010,0001,524,844
RS2561,520,00010,0001,524,565
RS3841,530,00001,528,074
RS5121,510,00001,526,089
Load Keyuser (ns)sys (ns)real (ns)
RSA210,0003,000210,791
Verify Tokenuser (ns)sys (ns)real (ns)
HS256100,0000101,478
HS384100,00010,000103,014
HS512110,0000104,323
PS256230,0000231,058
PS384240,0000237,551
PS512240,0000232,450
RS256230,0000227,737
RS384230,0000230,698
RS512230,0000228,624

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
SpringWeb中的java更新/通知其他用户   java Lambda性能测试   java Bukkit插件:空白符号   java在按下按钮后改变彩色正方形的大小   javajavac相当于“D”?   java序列化接口   属性无法从属性文件返回值   java我应该使用什么查询来使用Jsoup从html页面提取符号?   java Android Studio项目结构问题   JAVA方法和返回值/公共变量(基础)   java将NativeQuery映射到POJO   java如何在下面的程序中消除NumberFormatException?   在java中获取链表与数组中的对象   java Android Firebase将用户发送到聊天室