Hawk访问认证协议
项目描述
这是一个实现Hawk访问认证的低级别库,该认证方案是一种简单的HTTP请求签名方案,在以下链接中描述:
要使用Hawk访问认证访问资源,客户端必须获取一组Hawk凭证,包括id和密钥。他们使用这些凭证对服务器进行签名请求。
当访问受保护的资源时,服务器将生成一个包含“Hawk”方案的401挑战响应,如下所示
> GET /protected_resource HTTP/1.1 > Host: example.com < HTTP/1.1 401 Unauthorized < WWW-Authenticate: Hawk
客户端将使用他们的Hawk凭证构建请求签名,并将其包含在Authorization头中,如下所示
> GET /protected_resource HTTP/1.1 > Host: example.com > Authorization: Hawk id="h480djs93hd8", > ts="1336363200", > nonce="dj83hs9s", > mac="bhCQXTVyfj5cmA9uKkPFx1zeOXM=" < HTTP/1.1 200 OK < Content-Type: text/plain < < For your eyes only: secret data!
此库提供了实现此类认证方案所需的低级别函数。对于Hawk Auth客户端,它提供了以下功能
sign_request(req, id, key, algorithm="sha256"): 使用Hawk访问认证对请求进行签名。
对于Hawk Auth服务器,它提供了以下功能
get_id(req): 从请求中获取声明的Hawk Auth id。
check_signature(req, key, algorithm="sha256"): 检查请求是否使用给定的密钥签名。
传递给这些函数的请求对象可以是各种常见对象类型之一
一个WSGI环境字典
一个webob.Request对象
一个requests.Request对象
请求数据的字符串或文件-like对象
客户端程序的典型用法可能是将sign_request函数安装为认证钩子,当使用requests库时,如下所示
import requests import functools import hawkauthlib # Hook up sign_request() to be called on every request. def auth_hook(req): hawkauthlib.sign_request(req, id="<AUTH-ID>", key="<AUTH-KEY>") return req session = requests.session(hooks={"pre_request": auth_hook}) # Then use the session as normal, and the auth is applied transparently. session.get("http://www.secret-data.com/get-my-data")
服务器程序的典型用法可能是使用WSGI中间件组件验证请求,如下所示
class HawkAuthMiddleware(object): # ...setup code goes here... def __call__(self, environ, start_response): # Find the identity claimed by the request. id = hawkauthlib.get_id(environ) # Look up their secret key. key = self.SECRET_KEYS[id] # If the signature is invalid, error out. if not hawkauthlib.check_signature(environ, key): start_response("401 Unauthorized", [("WWW-Authenticate", "Hawk")]) return [""] # Otherwise continue to the main application. return self.application(environ, start_response)
Hawk协议的以下功能尚未支持
Beats。
时间戳调整。
计算或验证服务器的响应签名。
计算或验证有效载荷哈希值。
2.0.0 - 2016-01-16
兼容 Py27, Py35
0.1.1 - 2013-11-12
让密钥为任何二进制字符串;id 必须仍然是 ascii。
0.1.0 - 2013-08-19
初始版本;这基本上是 macauthlib 代码库,已移植到新的 Hawk 认证规范。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建版本
hawkauthlib-2.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | effd64a2572e3c0d9090b55ad2180b36ad50e7760bea225cb6ce2248f421510d |
|
MD5 | bb2257a488c9971ba226bc6ade06c11f |
|
BLAKE2b-256 | 26b70ec2846e5e2b3591ca867d7b06b67b5242f73bfe6da164b7232b8bffc657 |
hawkauthlib-2.0.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 935878d3a75832aa76f78ddee13491f1466cbd69a8e7e4248902763cf9953ba9 |
|
MD5 | efe71dcc5c5fdeca2c59881cd64faac9 |
|
BLAKE2b-256 | 53ec23dd5cbd5e950543fdd30d91ddac4f56e395d14316677aa4cb78a029f8e2 |