在 JavaScript 中安全地进行 Twitter OAuth 身份验证的最佳方法是什么?
我正在尝试编写一个程序让用户分析他的 Twitter 使用情况和关注者/ friend 。我已经编写了一个使用 python tweepy 模块工作的服务器端版本。
我想与人们分享它,但我希望它在浏览器中运行以实现可扩展性,而不是在我的小型服务器上运行。
我看到另一个问题,结果是不推荐也不安全: JavaScript OAuth sign in with Twitter
如果在应用的 JavaScript 中发送消费者(应用) secret 或访问(用户) secret ,这就有意义了。
但为什么我不能像这里一样在服务器端构建 URL - http://djangosnippets.org/snippets/1353/
然后将身份验证 URL 发送回浏览器,类似于 Twitter 的“我的应用程序”页面上的 OAuth 工具(不是有效凭据)
GET&https%3A%2F%2Fapi.twitter.com%2F1%2F&get%252Faccount%252Fverify_credentials_json%3D%26oauth_consumer_key%GD0bgcgMU4MDwNfKQpLFQS3%26oauth_nonce%3D24ad5049501dee1292afd8cf22307d68%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1329173626%26oauth_token%uPUpxsBc3D283768289LtQ6R1Ez1KeD8DOSsm5XpqJaKI28ysYh%26oauth_version%3D1 .0
然后让 jQuery 使用它来验证用户的凭据并运行分析。
这是一项重要的工作,我不想这样做,然后发现它不起作用或者是一种不安全的方法。 (或者已经完成)
这样安全吗?它似乎没有暴露任何 secret 。
那行得通吗?
关于为 jQuery noob 进行身份验证的正确方法的任何指针/示例,以及必要的授权: header 和 cookie/重定向处理?
我觉得我遗漏了一些东西,或者这是行不通的原因,或者它应该已经存在于某个地方,但还没有找到。非常感谢!
最佳答案
McNuts 先生,问题在于 oAuth 要求您传递您的消费者 secret ,因此即使您在服务器上构建 URL,您仍然会将其传回网页,这仍然会暴露您的消费者通过 HTTP 代理保密。
为防止泄露您的 secret ,您需要使用代理来执行 Twitter 身份验证请求,并将 oauth token 返回给浏览器。如果您真的担心规模问题,我会考虑按规模付费的解决方案,例如 GAE 或 Heroku。
关于javascript - JavaScript/jQuery 中的安全 Twitter OAuth 身份验证(加上服务器端助手),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9269810/