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

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

>这不是公钥/私钥交换:你给他们两个,对吗?
>你也没有使用秘密散列内容并计算其他值,就像在许多散列算法中一样:你总是给出相同的密钥和秘密.

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

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

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

最佳答案 您将谈论HMAC身份验证您提到的密钥类似于您的帐户名称,它不会直接用于任何身份验证.秘密将严格脱机共享,永远不会发回.在HMAC身份验证中,您发回一个签名,该签名源自服务器和客户端之间商定的一组参数,当然秘密就是其中的一部分.

点赞