如何使用Javascript OAuth库不暴露您的密钥?

ric*_*ico 24 javascript security oauth

看看Twitter OAuth Libraries,我看到了这个说明:

在OAuth中使用JavaScript时要小心.不要暴露你的钥匙.

然后,看看jsOAuth示例,我注意到密钥在代码中公开.

所以我的问题是:当您在Javascript中使用OAuth库时,如何不暴露您的密钥?

谢谢.

更新:好的,也许jsOAuth不是正确的库,但是如何在完整的Javascript网站上使用OAuth进行身份验证?

Fil*_*efp 10

正如您链接的文档中所述:

jsOAuth是用JavaScript编写的,旨在成为一个功能齐全的开源OAuth库,用于Adobe AIR,Appcelerator Titanium和PhoneGAP.事实上,任何可以使用javascript并具有跨域XMLHttpRequests的地方.出于安全原因,jsOAuth无法在浏览器中运行.这里只提到浏览器来运行测试套件.如果您在浏览器中需要jsOAuth,请编写扩展名.


这里提供了对您添加的问题的良好答案:


Jon*_*der 5

目前,在浏览器中执行OAuth 1的唯一合理方法是通过服务器路由API调用.

就我而言,根本就没有办法解决这个问题.如果您通过浏览器中的JavaScript进行OAuth 1.0a调用 - >您必须向至少最终用户公开您的消费者机密和访问令牌机密.

您无法将这些凭据存储在:

  • 一个cookie,用户可以找到它们.
  • 本地存储,用户可以找到它们(虽然比cookie更好,因为它不需要通过HTTP来回发送cookie)
  • 在javascript中,用户可以找到它们(虽然这可能是你最好的选择,因为它更容易模糊).

如果它只是暴露给最终用户的访问令牌秘密,那将是可以忍受的 - 因为事实上他/她已经对您的应用程序进行了身份验证.但是失去你的消费者秘密真的不那么热,这意味着你的应用程序有资格进行身份盗用.也就是别人可以写一个声称是你的应用程序的应用程序.

即使您在浏览器中安全地工作,您也会受到跨域安全块的阻碍.