看着推特OAuth图书馆,我看到了这张便条:
在与JavaScript一起使用OAuth时要小心。不要暴露你的钥匙。
然后,看看jsOAuth实例,我注意到这些键在代码中公开了。
所以我的问题是:在Javascript中使用OAuth库时,怎么可能不公开您的密钥呢?
谢谢。
更新:好吧,也许jsOAuth不是合适的库,但是如何能够在完整的Javascript网站上使用OAuth进行身份验证呢?
发布于 2011-12-15 13:12:54
正如您所链接的文档中所述:
用JavaScript编写的jsOAuth旨在成为一个功能齐全的开源OAuth库,用于Adobe、AppceleratorTit闭路和PhoneGAP。事实上,任何可以使用javascript的地方都有跨域XMLHttpRequests。出于安全原因,没有在浏览器中运行jsOAuth。这里只提到浏览器用于运行测试套件。如果您需要在浏览器中使用jsOAuth,请编写一个扩展。
你补充的问题有一个很好的答案,可以在这里找到:
发布于 2011-12-15 21:50:45
现在,在浏览器中执行OAuth 1的唯一真正合理的方法是通过服务器路由API调用。
据我所知,根本不可能围绕这一点。如果您从浏览器OAuth通过JavaScript进行-> 1.0a调用,则必须向最终用户公开您的使用者秘密和访问令牌秘密。
不能将这些凭据存储在:
如果它只是向最终用户公开的访问令牌秘密,那将是可以忍受的--因为实际上是他/她对您的应用程序进行了身份验证。但是失去你的消费者秘密真的没那么热,这意味着你的申请有资格被盗用。也就是说,其他人可以写一个自称是你的应用的应用程序。
即使您使它在浏览器中安全工作,您也会受到跨域安全块的阻碍。
发布于 2013-10-17 11:34:30
您还可以创建一个脚本,将所有必要的值和参数发送到服务器以进行签名。
然后,可以将签名的URL发送回客户端(浏览器),后者依次执行实际请求。
我使用jsonp请求在Twitter上实现了OAuth 1.0a。这样做的好处是响应体不会通过您的服务器中继,从而节省带宽。
这样你就可以吃你的饼干了。
https://stackoverflow.com/questions/8520626
复制相似问题