平台无关的python安全令牌(paseto)
paseto的Python项目详细描述
这是一个非正式的 PASETO: Platform-Agnostic Security Tokens对于python。
这还没有准备好生产,使用风险自负。
从https://github.com/JimDabell/pypast分叉, 它最初是为帕塞托早期设计的 过去的。
安装
pip install paseto
用法
这仍处于早期发展阶段。它没有经过安全审查 尚未审核,因此请注意,它预计不会在 生产系统。
它目前只支持“本地”令牌类型v2的基本加密/解密。 v1没有v2好,但是我们会接受一个功能性的,干净的,安全的拉动 如果你感兴趣的话,可以申请v1。
要创建/解析paseto令牌,请使用create/parse函数。这些遗嘱 自动为您处理json负载的编码/解码,并验证 索赔(目前只是“exp”过期注册索赔)。
importpasetoimportsecretsmy_key=secrets.token_bytes(32)# > b'M\xd48b\xe2\x9f\x1e\x01[T\xeaA1{Y\xd1y\xfdx\xb5\xb7\xbedi\xa3\x96!`\x88\xc2n\xaf'# create a paseto token that expires in 5 minutes (300 seconds)token=paseto.create(key=my_key,purpose='local',claims={'my claims':[1,2,3]},exp_seconds=300)# > b'v2.local.g7qPkRXfUVSxx3jDw6qbAVDvehtz_mwawYsCd5IQ7VmxuRFIHxY9djMaR8M7LWvCSvCZu8NUk-Ta8zFC5MpUXldBCKq8NtCG31wsoKv8zCKwDs9LuWy4NX3Te6rvlnjDMcI_Iw'parsed=paseto.parse(key=my_key,purpose='local',token=token,)print(parsed['message'])
您还可以生成并验证v2.public令牌,这些令牌已签名但未签名 加密:
importpasetoimportpysodiumpubkey,privkey=pysodium.crypto_sign_keypair()# pubkey > b'\xa7\x0b\x14\xec\x03\x97\x90\x86\x14\x12\xa0x:)\x97\xed\xdf\x81\xc3\xe4\x95\xd7R\xfe\x9bT\xba,\x92\x0c\xb9P'# privkey > b'@\x1fg\x9b\x83b$\xcdJP{\x93\xe8[\xae\x05.\xe9\xcb\x13\xe7`v\xa67\xd6\xb47\x7f\x96\xdf0\xa7\x0b\x14\xec\x03\x97\x90\x86\x14\x12\xa0x:)\x97\xed\xdf\x81\xc3\xe4\x95\xd7R\xfe\x9bT\xba,\x92\x0c\xb9P'token=paseto.create(key=privkey,purpose='public',claims={'my claims':[1,2,3]},exp_seconds=300)# > b'v2.public.eyJteSBjbGFpbXMiOiBbMSwgMiwgM10sICJleHAiOiAiMjAxOC0wMy0xM1QxNDo0MzozNC0wNjowMCJ9vjeSnGkfEk7tkHg5gj07vFo-YYBMTYEuSG00SqQ6iaYMeLMcc9puiOOUsu0buTziYeEmE9Fahtm1pi2PSPZpDA'parsed=paseto.parse(key=pubkey,purpose='public',token=token,)# > {'message': {'my claims': [1, 2, 3], 'exp': '2018-03-13T14:43:34-06:00'}, 'footer': None}print(parsed['message'])