我们在为REST Api进行身份验证时遇到了麻烦。
我们使用api密钥,时间戳等等以及请求正文或url查询字符串生成我们的签名哈希。身体中发送的所有内容必须始终为JSON,这样就没问题了。 但签署查询字符串让我们头疼。
必须通过签署查询参数来验证所有REST查询 使用私有凭证以小写,字母顺序排序 作为签名令牌。签名应该在URL编码之前进行 查询字符串。
但现在使用键[0] = somevalue& key [1] = someothervalue。怎么订购? 另一种方法是始终在查询字符串中强制使用JSON,这是一个可行的解决方案吗?
someurl { “somekey”: “someValue中”}?
修改的
让我们达到这一点的问题如下:我(客户端)使用?a = value1& b = value2发送请求,并使用此查询字符串创建哈希。但是我们的请求失败了,因为服务器(Apache,PHP)有时会收到?b = value2& a = value1。散列会产生不同的结果,因此失败的身份验证。
答案 0 :(得分:0)
不确定我是否正确关注,所以你有一个包含名为$key
的参数的数组?
这需要按字母顺序排列吗?
我会做以下
sort($key);
$queryStr = '';
for($k = 0; $k < count($key); $k++)
{
$queryStr .= 'key['.$k.']='.strtolower($key[$k]);
if($k < count($key)-1)
$queryStr .= '&';
}
$restURL = 'someurl?'.$queryStr;