对如何保护此设置有更深入的了解会很棒:
Node.js / ExpressJS / Oauth2orize 受 oauth2 保护并托管在
api.domain.com
domain.com
通过 Node.js / ExpressJS 服务器托管的 Backbone.js 应用程序
目前发生以下情况:
1 - 用户在浏览器中访问应用程序,提供用户名和密码,这些被发布到包装器 ( domain.com/login
)
2 - 包装器使用 client_id 和 client_secret 扩充用户名和密码,并将这些连同用户名和密码一起传递到api.domain.com/oauth/token
. 这是为了保证 client_id 和 client_secret 的安全,而不仅仅是在 javascript 应用程序中直接处理 api。此过程仅用于身份验证,一旦存在令牌,则计划是让 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 应用程序是否可以?
将 access_token 或 refresh_token 缓存在浏览器中是否可以?例如 cookie 或本地存储。如果是这样,这如何安全?如果没有,用户在刷新浏览器时是否必须重新进行身份验证?
如果有人可以说明在处理包装服务器和 JavaScript 应用程序中的 refresh_token 和 access_token 方面采取的“正确”步骤,那将不胜感激。