使用http签名的http请求的简单安全签名
http_signature的Python项目详细描述
使用安全签名对http请求进行签名。
要求
- 密码
可选:
- ssh或paramiko>;=1.8.0(用于ssh代理集成)
- 请求
用法
对于简单的原始签名:
import http_signature sig_maker = http_signature.Signer(secret='test.pem', algorithm='rsa-sha256') sig_maker.sign('hello world!')
用于请求:
import json import requests from http_signature.requests_auth import HTTPSignatureAuth auth = HTTPSignatureAuth(key_id='Test', secret='test.pem') z = requests.get('https://api.joyentcloud.com/my/packages/Small+1GB', auth=auth, headers={'X-Api-Version': '~6.5'})
类初始化参数
http_signature.Signer(secret='', algorithm='rsa-sha256', allow_agent=False)
secret,对于rsa签名,是指向专用rsa pem文件的路径。对于hmac,它是一个秘密密码。 algorithm是六个允许的签名之一:rsa-sha1,rsa-sha256,rsa-sha512,hmac-sha1,hmac-sha256, hmac-sha512。 allow_agent使用ssh包查找正在运行的ssh-agent实例,并使用该包对所有请求进行签名。注意,如果是这样的话,这将重写对签名算法的手动选择,使其成为rsa-sha1。
http_signature.requests_auth.HTTPSignatureAuth(key_id='', secret='', algorithm='rsa-sha256', headers=None, allow_agent=False)
key_id是服务器系统知道您的rsa签名或密码的标签。 headers是连接并用作签名对象的http头列表。默认情况下,它是规范的最小值,Datehttp头。 secret、algorithm和allow_agent如上所述。
许可证
麻省理工学院
更改
0.1.4(2012-10-03)
- 考虑到ssh现在正在被重新合并到paramiko中:任何一个包都是可以接受的(但paramiko最好是>;=1.8.0)
0.1.3(2012-10-02)
- 默认情况下,停止启用“允许”代理
- 默认情况下,不再需要ssh包-只有当allow_agent=true时才会导入它
- 更改了ssh代理的逻辑:如果有一个密钥可用,请不要使用任何其他身份验证方法
- 更改了密钥文件用法的逻辑:如果解密失败,则提示输入密码
- 错误修复:如果ssh代理找不到正确的密钥(谢谢,petervolpe),则会导致一个无意义的错误
- 介绍versioneer.py