1

我会试着解释这个问题。

有一些服务,其 API 完全在 JS (ajax/json) 中为站点合作伙伴构建。站点合作伙伴是与服务有某种合同的人。因此,对 API 的访问确实只有某些人(站点合作伙伴)。我要做的是为服务创建一些授权方式,以找出真正来自站点合作伙伴的请求。

复杂之处在于 API 完全用 JS 编写。这就是为什么 HTTP 身份验证、秘密 API 密钥、RSA 密钥交换都不适合这种类型的 API,因为服务需要一些身份验证参数来接收,唯一的方法是使用 JSON 通过 AJAX 传递它们格式。因此,每个知道如何查看页面源代码的人都可以简单地复制这些参数并以任何他们想要的方式使用它们。

具有 IP 限制的变体也不适合,至少因为站点合作伙伴可以托管在共享主机上。

我想使用一些带有一些不明确哈希的 API 密钥(仅对服务明确)+ 时间戳。但这种方法迟早会变得清晰。

无论如何,想到的一切都不完全合适。也许有人遇到过这个问题?将不胜感激任何答案。

4

1 回答 1

0

因为服务需要一些身份验证参数才能接收,而唯一的方法是使用 JSON 格式通过 AJAX 传递它们。

我认为您误解了 JSON 和 JavaScript 之间的区别。 JSON是一种数据格式,类似于 XML 或 SOAP。您不必使用 JavaScript 来阅读它。PHP、Ruby、Java、Python 和其他语言对 JSON 有很好的支持。通常 JSON 通过 HTTP 传递。

因此,每个知道如何查看页面源代码的人都可以简单地复制这些参数并以任何他们想要的方式使用它们。

如果您的服务提供商要求您使用某种密钥,我真的怀疑他们是否希望您在浏览器中执行此操作。由于跨域限制,您甚至可能不会被允许发出请求(大多数浏览器不会让您发出请求(尤其是 POST)执行不是您请求的域)。

我的猜测是,您将需要在服务器端与您的提供商进行处理。如果您的提供商有文档,我会咨询它。否则,看看您是否可以让他们的开发人员之一来帮助您。

于 2012-04-30T00:08:02.493 回答