2012-04-04 60 views
5

我即将开始开发业务应用程序,希望前端成为单页JavaScript解决方案。后端是作为REST API提供的。我怎样才能以安全的方式从JavaScript前端访问REST API?从JavaScript中使用REST Oauth 2.0 API的安全方式

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

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

+1

我能想到的一个解决方案是,不用返回一个在1小时内过期的访问令牌,我可以返回滑动过期的access_token。对于客户对API的每次呼叫,到期时间被更新,即20分钟。但是这被认为是安全的吗?我从来没有见过使用滑动过期的Oauth服务器? – rgullhaug 2012-04-04 08:39:23

回答

5

我们(Ping身份)支持在我们的OAuth AS实现中滑动访问令牌的过期 - 没有任何OAuth 2.0规范明智地表示您不能这样做。对于其他授权类型,您可能需要刷新令牌来延长使用寿命 - 但隐含不适用于他们。

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

+1

感谢您花时间回答我的问题。我会实现滑动过期,也非常感谢你的javascript工具包,我会检查出来:)另外一个问题:在隐式流程中,我们没有提供客户端秘密(因为它不能在客户端保密),但我们需要确定哪个客户端连接到我们的服务,因为不同的客户端可以访问API的不同部分。将检查redirect_uri与注册的redirect_uri相同是否足以保证我们正在与正确的客户端交谈? – rgullhaug 2012-04-04 19:07:56

+1

是的 - redirect_uri比较是要走的路。就像你说的,你维持客户端的秘密只有这么长时间才是秘密。 – 2012-04-04 20:56:26