我如何识别我的API的用户,当他们在JS中调用它

How can I identify users of my API when they call it in JS?

本文关键字:他们 JS 调用 用户 何识别 识别 API 我的      更新时间:2023-09-26

我已经构建了一个人们打算在javascript(客户端,而不是Node.js)中使用的API。问题是我需要知道谁在使用我的API。如果我让人们在他们对我的API的ajax调用中包含API密钥,任何人都可以看到他们的API密钥并使用它。

我如何识别我的API的用户,如果他们从他们的JS调用?

$.ajax(function(){
  url: "http://usefulapi.com/get-things?api_key=123412341234134", // Anybody can see my API key.
  data: { some_data }
});

通常,我们对API访问使用公钥和私钥加密的组合。私钥只有API知道,您可以基于公钥和私钥创建散列,并检查它们在服务器端是否匹配。

接下来,最好将键限制为特定域。在PHP中,您可以轻松地使用$_SERVER['HTTP_ORIGIN']超全局变量来检查请求来自何处。下面的伪代码应该会给你一些提示:

$domain = basename($_SERVER['HTTP_ORIGIN']);    
$apiKey = $_REQUEST['api_key'];
// Now, get the private key for this domain
// Check the private and public keys match
// The request is either allowed or denied.

您将看到,有必要在数据库中添加一个身份验证表,并在其中存储域、公钥和私钥,这样您就可以对请求进行身份验证。