Javascript JSAPI认证

Javascript JSAPI认证,javascript,ajax,json,api,authentication,Javascript,Ajax,Json,Api,Authentication,我会尽力解释这个问题 有一些服务,它为站点合作伙伴完全在JS(ajax/json)中构建了API。站点合作伙伴是指与服务签订合同的人员。因此,只有某些人(站点合作伙伴)才能访问API。我要做的是为服务创建一些授权方式,以确定请求是否真正来自站点合作伙伴 复杂性在于API完全是用JS编写的。这就是为什么HTTP身份验证、机密API密钥和RSA密钥交换都不适合这种类型的API的原因,因为服务需要一些身份验证参数来接收,唯一的方法是使用JSON格式通过AJAX传递这些参数。因此,每个知道如何查看页面源

我会尽力解释这个问题

有一些服务,它为站点合作伙伴完全在JS(ajax/json)中构建了API。站点合作伙伴是指与服务签订合同的人员。因此,只有某些人(站点合作伙伴)才能访问API。我要做的是为服务创建一些授权方式,以确定请求是否真正来自站点合作伙伴

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

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

我想使用一些带有不清楚散列的API键(只对服务清除)+时间戳。但这种方法迟早会变得清晰

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

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

我认为你误解了JSON和JavaScript之间的区别。是一种数据格式,如XML或SOAP。您不必使用JavaScript来读取它。PHP、Ruby、Java、Python和其他语言都非常支持JSON。通常JSON是通过HTTP传递的

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

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


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

我知道JSON和JS的区别。我的意思是授权参数将被打印在页面的源代码(HTML)中,因为API完全是客户端的。因此,让我们假设您是站点合作伙伴,而我是坏人,希望使用您的授权参数并访问API,而不管参数是如何生成的(证书签名、API密钥、http身份验证用户名和密码等)。因此,我只需打开您的网站,单击“查看源代码”并搜索授权参数,复制它们并按我的意愿使用它们。API“完全客户端”是什么意思?它们是否提供JavaScript中的实际应用程序逻辑代码?e、 g.功能、对象?他们实际上在DOM中放置授权令牌?是的,他们实际上想在DOM中存储授权令牌。我的任务是创造一种安全的方法来做到这一点。我认为,如果没有一些服务器端授权,这是不可能的。