在线跟踪一些示例后,我将为正确签名的有效负载返回200响应,对错误签名或格式错误的有效负载返回401响应。
以下最小例子已经过测试。
正确生成签名,checkHash()
函数标识正确签名/形成的有效负载。
我从端点获得的反馈是响应包含正文。给出here的建议是从响应的主体中删除所有内容 - 但据我所知,我所返回的是作为回声的字面响应,即 200 或 401
$key = 'abcSomeKey';
$rawPayload = file_get_contents("php://input");
checkHash();
function getSignature() {
return base64_encode(hash_hmac('sha256', $rawPayload, $key, true));
}
function checkHash() {
$signature = getSignature();
if($signature === $_SERVER['HTTP_X_XERO_SIGNATURE']) {
echo 200;
}
else {
echo 401;
}
}
答案 0 :(得分:1)
我不太了解php,但有两个错误。签名验证在功能块内没有按预期工作。 $rawPayload
是getSignature()
函数中的空字符串。
此外,我天真地返回了下面格式正确的响应代码。
$key = "someKey";
$rawPayload = file_get_contents("php://input");
$signature = base64_encode(hash_hmac('sha256', $rawPayload, $key, true));
$authKey = $_SERVER['HTTP_X_XERO_SIGNATURE'];
if($signature === $authKey)
{
http_response_code(200);
}
else
{
http_response_code(401);
}