首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何不使用Javascript OAuth库公开您的秘密密钥?

如何不使用Javascript OAuth库公开您的秘密密钥?
EN

Stack Overflow用户
提问于 2011-12-15 13:10:48
回答 3查看 8.8K关注 0票数 24

看着推特OAuth图书馆,我看到了这张便条:

在与JavaScript一起使用OAuth时要小心。不要暴露你的钥匙。

然后,看看jsOAuth实例,我注意到这些键在代码中公开了。

所以我的问题是:在Javascript中使用OAuth库时,怎么可能不公开您的密钥呢?

谢谢。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-15 13:12:54

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

用JavaScript编写的jsOAuth旨在成为一个功能齐全的开源OAuth库,用于Adobe、AppceleratorTit闭路和PhoneGAP。事实上,任何可以使用javascript的地方都有跨域XMLHttpRequests。出于安全原因,没有在浏览器中运行jsOAuth。这里只提到浏览器用于运行测试套件。如果您需要在浏览器中使用jsOAuth,请编写一个扩展。

你补充的问题有一个很好的答案,可以在这里找到:

票数 10
EN

Stack Overflow用户

发布于 2011-12-15 21:50:45

现在,在浏览器中执行OAuth 1的唯一真正合理的方法是通过服务器路由API调用。

据我所知,根本不可能围绕这一点。如果您从浏览器OAuth通过JavaScript进行-> 1.0a调用,则必须向最终用户公开您的使用者秘密和访问令牌秘密。

不能将这些凭据存储在:

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

如果它只是向最终用户公开的访问令牌秘密,那将是可以忍受的--因为实际上是他/她对您的应用程序进行了身份验证。但是失去你的消费者秘密真的没那么热,这意味着你的申请有资格被盗用。也就是说,其他人可以写一个自称是你的应用的应用程序。

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

票数 5
EN

Stack Overflow用户

发布于 2013-10-17 11:34:30

您还可以创建一个脚本,将所有必要的值和参数发送到服务器以进行签名。

然后,可以将签名的URL发送回客户端(浏览器),后者依次执行实际请求。

我使用jsonp请求在Twitter上实现了OAuth 1.0a。这样做的好处是响应体不会通过您的服务器中继,从而节省带宽。

这样你就可以吃你的饼干了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8520626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档