Hawk - HTTP Holder-Of-Key Authentication Scheme

查看原文

Hawk 是一个使用 MAC 对 HTTP 请求头,请求参数进行加密校验的算法。 Hawk 的主要用例是进行服务端和客户端的 two-legged 授权验证。

范例:

GET /resource/1?b=1&a=2 HTTP/1.1
Host: example.com:8000
Authorization: Hawk id="dh37fgj492je", ts="1353832234", nonce="j4h3g2", ext="some-app-ext-data", mac="6R4rV5iE+NPoym+WwjeHzjAGXUtLNIxmo1vpMofpLAE="

它需要客户端和服务端都有一个 加密用的 key。协议本身不提供获取和传送密钥的手段,一般需要使用者使用 TLS 先行建立一个传输层的安全连接。协议只是验证请求头和部分请求参数没被篡改,所以不可以就把敏感数据放进去。 nonce 最好使用 cryptographically secure PRNGs 生成。

它的对比方案是HTTP Digest。Hawk 的好处是不需要额外与服务器做一次通信就能得到 nonce。