跳转到主要内容

requests-hawk

项目描述

pypi travis

本项目允许您使用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参数。相反,单独传递idkey(如上所示),或者将现有字典作为**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会话令牌的末尾添加额外的:,以便将其视为如下。

共享凭据是如何共享的?

好的,接下来是实际细节。

服务器给您一个会话令牌,您需要从中推导出hawk凭据。

对给定的会话令牌进行HKDF推导。您需要使用以下参数

key_material = HKDF(hawk_session, '', 'identity.mozilla.com/picl/v1/sessionToken', 32*2)

从HKDF中获得的密钥材料需要分为两部分,前32个十六进制字符是hawk id,接下来的32个是hawk key

credentials = {
    'id': keyMaterial[0:32]
    'key': keyMaterial[32:64]
    'algorithm': 'sha256'
}

运行测试

要运行测试,您可以使用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)

  • 第一个版本

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

requests-hawk-1.2.1.tar.gz (6.8 kB 查看哈希值)

上传时间 源代码

构建分发

requests_hawk-1.2.1-py2.py3-none-any.whl (7.4 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下提供支持