且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在 RESTful WCF API 中实现 HMAC 身份验证

更新时间:2023-09-24 16:26:22

检索用户密钥只是一个实现细节,您可以随心所欲地进行任何操作,但在服务器上,它通常与用户名一起存储在数据库中.

Retrieving the user key is just an implementation detail you can do any way you like but on the server it is often stored in a database along with the user name.

基本方法非常简单.

  1. 服务器和客户端以某种方式交换共享密钥以供用户使用.这可以通过您喜欢的任何方式完成,包括发送一封老式的枯树风格的信件.通常这只是用户输入的密码.
  2. 当客户端想要发送请求时,他会构建完整的请求,然后使用密钥计算完整消息正文(以及可选的一些消息头,如果需要)的哈希值
  3. 接下来,客户端将计算出的哈希值和他的用户名添加到消息头之一的消息中,并将其发送到服务.
  4. 该服务从消息标头中检索用户名,并在其自己的数据库中搜索该用户的私有 keu.
  5. 接下来,他使用密钥计算消息正文(和选定的标题)的哈希值以生成其哈希值.
  6. 如果客户端发送的哈希值与服务器计算的哈希值匹配,则服务器知道消息是由真实客户端发送的,并且没有以任何方式进行更改.

真正唯一棘手的部分是与用户共享密钥并确保其安全.这就是为什么某些服务允许生成有限生命周期的共享密钥,以便您可以将密钥提供给第三方以临时代表您工作.

Really the only tricky part is sharing a secret key with the user and keeping that secure. That is why some services allow for generation of shared keys with a limited life time so you can give the key to a third party to temporarily work on your behalf.