【问题标题】:Safe way to consume REST Oauth 2.0 API from javascript从 javascript 使用 REST Oauth 2.0 API 的安全方式
【发布时间】:2012-04-17 20:37:18
【问题描述】:

我即将开始开发一个业务应用程序,我希望前端是一个单页 javascript 解决方案。后端作为 REST API 提供。如何以安全的方式从 Javascript 前端访问 REST API?

我已经开始在我的 REST API 中开发 Oauth 2.0,并且我已经知道“隐式授权流程”,这是 javascript 客户端的推荐流程。问题是这个流程应该只提供短暂的访问令牌(可能是 1 小时?)。

我系统的用户通常会在早上登录并在应用程序中工作一整天(8 小时)并在离职前注销,但如果访问令牌仅存在一个小时,他们将不得不每小时再次登录,这是不可接受的。你如何解决这个问题?

【问题讨论】:

  • 我能想到的一个解决方案是返回一个在 1 小时内到期的访问令牌,而不是返回一个具有滑动到期的 access_token。对于客户端对 API 的每次调用,过期时间都会更新,即 20 分钟。但这被认为是安全的吗?我从未见过使用滑动过期的 Oauth 服务器?

标签: javascript security api rest oauth-2.0


【解决方案1】:

我们(Ping Identity)在我们的 OAuth AS 实现中支持访问令牌的滑动到期 - 没有任何 OAuth 2.0 规范规定您不能这样做。对于其他授权类型,您需要一个刷新令牌以延长生命周期 - 但隐式不适用于它们。

不确定您是否需要 JavaScript OAuth 工具包,但 here's one 可能适合您的目的。

【讨论】:

  • 感谢您抽出宝贵时间回答我的问题。我将实现滑动过期,也非常感谢您提供的 javascript 工具包,我会检查一下:) 还有一个问题:在隐式流程中,我们没有提供客户端密码(因为它不能在客户端保密),但是我们需要确定哪个客户端连接到我们的服务,因为不同的客户端将可以访问 API 的不同部分。检查redirect_uri 是否与注册的redirect_uri 相同就足以保证我们正在与正确的客户端交谈?
  • 是的 - redirect_uri 比较是要走的路。就像你说的,你在客户端维护的任何秘密都是秘密的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
  • 2015-04-14
  • 1970-01-01
  • 2012-07-24
  • 1970-01-01
  • 2014-09-21
  • 2012-12-27
相关资源
最近更新 更多