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

  • 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方面采取的“正确”步骤,那将非常感激 .