60

我有兴趣为 web.api 创建 API 密钥并允许客户端使用 API 密钥而不是 web.api 提供的授权与 API 进行通信。

我希望多个客户端能够与 web.api 进行通信。我可以使用 api 密钥而不是创建用户名和密码,并允许客户端与客户端通信。

有这样的内置功能吗?

如果要实施它,您将如何解决?

4

1 回答 1

72

您可以通过使用HMAC Authentication来实现。基本上,可能有一个名为ApiKey (apiKey, secretKey)的数据库表。每个客户端都有每个 Apikey 和密钥:

  1. ApiKey 就像一个公钥,将通过 HTTP 发送(类似于用户名)。

  2. 密钥不是通过 HTTP 发送的,使用这个密钥来做 hmac 一些信息并将散列输出发送到服务器。从服务器端,根据公钥,您可以获得相关的密钥和哈希信息,以与哈希输出进行比较。

我已在以下位置发布了详细答案:如何保护 ASP.NET Web API

您可以在我的答案中通过 ApiKey 更改用户名和通过密钥更改哈希密码以映射您的想法。

于 2012-08-06T15:34:58.813 回答