【问题标题】:How does hello.js avoid storing the client_secret?hello.js 如何避免存储 client_secret?
【发布时间】:2014-09-11 21:35:05
【问题描述】:

我目前的任务是弄清楚如何严格从客户端 JavaScript 充分利用 OAuth 2.0 提供程序,并且担心暴露应用程序的 client_secret。这本质上是 OAuth 客户端的“密码”。

hello.js 如何避免client_secret 一起出现?

这些提供者是否依赖引用者和应用程序域来验证(识别)客户端请求?

【问题讨论】:

  • 你只需要使用你的client_id,而不是秘密。提供者可以检查引荐来源网址,但这不是必需的,因为无论如何他们都必须重定向到您控制的网站上的页面。该登陆页面使用 location.hash 从第 3 方获取信息,该信息不会通过 http。如果着陆页信息与客户的预期相符,则称该请求已获得授权。

标签: javascript web-applications oauth-2.0 hello.js


【解决方案1】:

HelloJS 默认使用隐式流 - @dandavis 在他的评论中描述。如果服务不支持隐式授权流程,可能它支持 OAuth2 身份验证代码/显式授权或 OAuth1 身份验证流程 - 以上所有内容都需要在处理请求时使用隐藏的密钥 - HelloJS 通过 OAuth 代理转移请求(见http://adodson.com/hello.js/#oauth-proxy)代理的工作是完成握手并返回一个access_token。

【讨论】:

  • 如果我使用 OAuth 代理(auth-server.herokuapp.com 或我自己的),并通过访问代理的网页存储密钥,使用我自己的凭据登录,HelloJS 如何访问该信息以获取用户未使用我的凭据登录?如果 HelloJS 可以在没有我的凭据的情况下访问该信息,那么为什么它不是对所有人都可用,因此不再是秘密?
猜你喜欢
  • 2013-03-06
  • 1970-01-01
  • 2021-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多