tokenly / hmac-auth
Tokenly API 的 HMAC 验证
v1.2.0
2017-11-08 15:06 UTC
Requires
- php: >=5.5.0
Requires (Dev)
- guzzlehttp/guzzle: ~6
- phpunit/phpunit: ~4
- symfony/http-foundation: ~2|~3
Suggests
- guzzlehttp/guzzle: Use with Guzzle >= 6
- rmccue/requests: Use with Requests >= 1.6
- symfony/http-foundation: Used for signing HTTP requests
README
Tokenly 的 HMAC 验证组件。
身份验证
为了验证使用此组件的 HTTP 请求,您必须在请求中包含 3 个 HTTP 标头
- X-Tokenly-Auth-Api-Token
- X-Tokenly-Auth-Nonce
- X-Tokenly-Auth-Signature
要生成这些标头,您需要一个 API 令牌和秘密 API 密钥。
假设我的 API 令牌是 TWKTkwIQDTvirh6D
,我的 API 秘密密钥是 Kun2M2UladalYAeUvXyiKWhFuwrsmSreM841K45O
。以下是每个标头的说明。
X-Tokenly-Auth-Api-Token
此令牌仅仅是 API 令牌。
示例: X-Tokenly-Auth-Api-Token: TWKTkwIQDTvirh6D
X-Tokenly-Auth-Nonce
nonce 标头是当前的 Unix 时间戳(以秒为单位)。
示例: X-Tokenly-Auth-Nonce: 1457530047
X-Tokenly-Auth-Signature
签名是使用 sha256 HMAC 编码的 base64 字符串。哈希密钥是 API 密钥。消息是使用以下数据生成的
{METHOD}\n
{URL}\n
{PARAMETERS}\n
{API TOKEN}\n
{NONCE}
{METHOD} 是 HTTP 方法,如 GET、POST、PUT、DELETE {URL} 是 API 端点的完整 URL {PARAMETERS} 是必需的,应该是一个表示参数的 JSON 编码字符串。对于空参数,使用 {}
。{API TOKEN} 和 {NONCE} 与发送到标头的值相同。
项目由单个换行符分隔。
在计算 HMAC 后,以 base64 格式编码数据。
示例
使用上述值和 GET 请求 https://www.example.com/api/v1/mystuff,签名标头将是
X-Tokenly-Auth-Signature: hZ6SDgcZzo5AYrS9yopEQo068ax0NojG/CfXWG+RJEA