javascript - JS API 认证

标签 javascript ajax json api authentication

我会尽力解释这个问题。

有一些服务,它的 API 完全用 JS (ajax/json) 为站点合作伙伴构建。站点合作伙伴是与服务有某种契约(Contract)的人。因此,API 的访问权限确实只有某些人(站点-合作伙伴)。我要做的就是为服务创建某种授权方式,以查明请求是否确实来自站点合作伙伴。

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

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

我想使用一些API key 和一些不清楚的哈希值(仅对于服务来说是清晰的)+时间戳。但这个方法迟早会变得清晰。

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

最佳答案

because the service needs some authentication parameters to receive and the only way to do that is to pass them via AJAX using the JSON format.

我认为您误解了 JSON 和 JavaScript 之间的区别。 JSON是一种数据格式,如 XML 或 SOAP。您不必使用 JavaScript 来阅读它。 PHP、Ruby、Java、Python 等都对 JSON 提供了很好的支持。通常 JSON 通过 HTTP 传递。

So, everyone, who knows how to look in the source code of the page, can simply copy those parameters and use them every way they want to.

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

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

关于javascript - JS API 认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10377085/

相关文章:

ajax - 从 Flash 迁移到 HTML5/CSS/等

javascript - 如何使用 jQuery 的日期选择器突出显示日期

java - 带有 Java 后端的 angularjs

javascript - 消息窗口隐藏在面板后面

javascript - 使用 jQuery 从 JSON 对象值创建一个数组

javascript - jquery 检查 json var 是否存在

javascript - 如果 xml 包含重复(多个)标签,如何在 json 中表示 xml

javascript - 如何在 Moment.js 中按值添加时间?

jquery - 检查AJAX响应是否为空等问题

ruby-on-rails - 在表单 Rails 中创建多个对象