为什么在许多Web API中既有密钥又有秘密?

时间:2012-09-25 15:25:47

标签: api rest

许多Web REST API为您提供密钥和秘密。当您向API发出请求时,您必须将它们返回。有什么用?他们中的其中一个不够吗?

  • 这不是公钥/私钥交换:你给他们两个,对吧?

  • 您也没有使用秘密散列内容并计算其他值,就像在许多散列算法中一样:您总是给予相同的密钥和秘密。

我唯一能找到的是对How to use a key and secret for verification?的回答,即服务器可以用你的秘密便宜地哈希你的域(或者可能是用户名或其他东西)并检查它是否与密钥匹配。这真的有用吗?

(奖金将是这个机制的名称。它似乎与我在stackoverflow /维基百科上找到的关于加密机制的内容不相符。)


更新:答案和几条评论告诉我, 一个坏主意是在请求中传递密钥和相应的密钥。它确实在实践中发生,但它仍然是一个坏主意。

1 个答案:

答案 0 :(得分:2)

您会谈到HMAC Authentication您提到的key类似于您的帐户名称,它不会直接用于任何身份验证。 secret将严格脱机共享,永不发回。在HMAC身份验证中,您发回一个签名,该签名派生自服务器和客户端之间商定的一组参数,当然secret是其中的一部分。