requests-hawk
项目描述
本项目允许您使用python requests库与hawk认证机制。
Hawk本身不提供获取或传输所需共享凭据的任何机制,但本项目提出了一种我们用于mozilla服务项目的方案。
很好,我该如何使用它?
首先,您需要安装它
pip install requests-hawk
然后,在您的项目中,如果您知道id和key,可以使用
import requests
from requests_hawk import HawkAuth
hawk_auth = HawkAuth(id='my-hawk-id', key='my-hawk-secret-key')
requests.post("https://example.com/url", auth=hawk_auth)
或者如果您需要从hawk会话令牌中推导它们,请使用以下方式
import requests
from requests_hawk import HawkAuth
hawk_auth = HawkAuth(
hawk_session=resp.headers['hawk-session-token'],
server_url=self.server_url
)
requests.post("/url", auth=hawk_auth)
在第二个示例中,server_url参数到HawkAuth被用来提供一个默认的主机名,以避免在每次请求中重复它。
如果您希望覆盖默认算法(sha256),请使用可选的algorithm参数传递所需的算法名称。
注意:已删除credentials参数。相反,单独传递id和key(如上所示),或者将现有字典作为**credentials。
与httpie集成
Httpie是一个工具,它允许您以简单易懂的方式向远程服务器发送请求。在底层,httpie使用requests库。我们已使其简单,您可以轻松地将hawk与它集成。
如果您知道id和key,使用它如下
http POST localhost:5000/registration\
--auth-type=hawk --auth='id:key'
或者,如果您想使用hawk会话令牌,您可以这样做
http POST localhost:5000/registration\
--auth-type=hawk --auth='c0d8cd2ec579a3599bef60f060412f01f5dc46f90465f42b5c47467481315f51:'
请注意,不要忘记在hawk会话令牌的末尾添加额外的:,以便将其视为如下。
运行测试
要运行测试,您可以使用tox
tox
变更日志
1.2.1 (2023-05-03)
添加对ext外部数据字符串的支持(#34)(感谢@jtmaclachlan)
1.2.0(未发布)
目前没有任何变化。
1.1.1 (2021-06-04)
处理Content-Type定义为字节而不是字符串的情况。(#25)
允许配置app mohawk发送者参数
1.1.0 (2020-12-16)
允许使用always_hash_content跳过对请求和响应体的哈希处理。
1.0.1 (2020-01-20)
添加Python 3支持。(#22)
1.0.0 (2015-12-15)
当id和key已知时,简化了使用HawkAuth的API。(#8)
添加了对从hawk会话令牌中推导凭据时覆盖默认算法(sha256)的支持,通过新的algorithm参数。
如果您使用credentials参数,请参阅README以获取迁移建议。
0.2.1 (2015-10-14)
确保正确处理请求的json参数。(#7)
0.2.0 (2015-05-19)
使用Python 3.4修复setup.py中的编码错误
添加一个配置参数,以便能够设置要使用的时戳。
0.1.2 (2014-08-13)
添加Python3支持
0.1.1 (2014-07-21)
第一个版本