关于oauth2的混淆以及应该存储access_token和refresh_token的位置

时间:2014-09-03 19:40:17

标签: javascript backbone.js express oauth-2.0 oauth2orize

很高兴能够更深入地了解如何保护此设置:

  • Node.js / ExpressJS / Oauth2orize受oauth2保护并托管在api.domain.com上的REST API

  • 通过Node.js / ExpressJS服务器提供的domain.com托管的Backbone.js应用程序

目前发生以下情况:

1 - 用户在浏览器中访问应用程序,提供用户名和密码,这些都发布到包装器(domain.com/login

2 - 包装器使用client_id和client_secret扩充用户名和密码,并将这些用户名和密码一起传递到api.domain.com/oauth/token。这样做不仅仅是在javascript应用程序中直接处理api,以保持client_id和client_secret的安全。此过程仅用于authing,一旦存在令牌,该计划供JS客户端直接与api通信。

3 - api.domain.com/oauth/token检查用户和密码凭据并在凭证通过时发出refresh_token和access_token,或者返回401

4 - 包括refresh_token和access_token在内的令牌响应将作为对domain.com/login请求的响应返回到javascript应用程序。目前,JavaScript客户端使用refresh_token处理设置授权标头和获取新的access_tokens。

我有很多问题:

首先,我对access_token和refresh_token感到困惑,我怀疑我根本不应该将refresh_token传递给浏览器 - 是否应该通过代理进行刷新而将其缓存在代理上?或者将refresh_token传递给Javascript App是否正常?

是否可以在浏览器中缓存access_token或refresh_token?例如cookies或localstorage。如果是这样,这是如何安全的?如果没有,用户在刷新浏览器的任何时候都不会重新进行身份验证吗?

如果有人可以说明“正确”的话。处理包装器服务器和JavaScript应用程序中的refresh_token和access_token的步骤,非常感谢。

0 个答案:

没有答案