Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 记录多客户端环境中的API使用情况_Javascript_Node.js_Rest_Usage Statistics - Fatal编程技术网

Javascript 记录多客户端环境中的API使用情况

Javascript 记录多客户端环境中的API使用情况,javascript,node.js,rest,usage-statistics,Javascript,Node.js,Rest,Usage Statistics,所以这里有一个场景,我有一个编写JS的API,并在服务器上使用nodejs公开,我想在私钥注册的基础上提供给不同的客户机使用。需要以multi-tennant方式记录每个GET请求客户端,以进行计费,并验证客户端是否应使用allowed/sigup limit 如何使用。你的问题有点含糊不清,但我会尽力帮你 如果我是在这种情况下,我会利用api(公共)和秘密(私人)密钥为每个客户端,签名。每个请求都必须包含公钥(作为字段或头,或根据您的喜好),以标识客户端,以及签名头,以及从生成的签名(这可能有

所以这里有一个场景,我有一个编写JS的API,并在服务器上使用nodejs公开,我想在私钥注册的基础上提供给不同的客户机使用。需要以multi-tennant方式记录每个GET请求客户端,以进行计费,并验证客户端是否应使用allowed/sigup limit


如何使用。

你的问题有点含糊不清,但我会尽力帮你

如果我是在这种情况下,我会利用api(公共)和秘密(私人)密钥为每个客户端,签名。每个请求都必须包含公钥(作为字段或头,或根据您的喜好),以标识客户端,以及签名头,以及从生成的签名(这可能有点不对劲,我已经有一段时间没有这样做了)HMAC字符串,基于发送信息的base64编码和特定客户端的密钥。因为只有您的服务和客户机应该具有此密钥,所以您将能够验证签名是否与客户机不匹配

在密钥泄露的情况下,为客户端提供重置密钥的方法也是一个好主意

此时,您已经识别并验证了客户机,因此您可以简单地在您使用的任何类型的数据库中记录请求。如果您想验证是否允许客户机发出该请求,则必须构建某种权限系统(可能是由每个客户机允许访问的内容或允许哪些客户机访问每个资源组成的db表),并进行检查以确保客户机未超过您设置的速率限制


如果这与您的要求不完全一致,我深表歉意,如果您还有任何问题,请随时提问。

我为我的声明中的不明确表示歉意,您在上面的声明中正确理解了我的要求。对于每个GET,我必须记录计数器,以便根据计划根据此服务的允许点击数进行验证。如果您能给我指出任何教程/示例代码,我会很有帮助吗?不幸的是,我不知道这方面的任何示例代码,因为其中大部分是对您的数据库的基本检查(他们是否有权限、增加计数器等)。至于签名验证,Facebook使用类似的方案与第三方应用程序进行通信。他们有一些文档可以帮助你。谢谢尼克,这很有帮助。我会检查的。:)