很高兴能够更深入地了解如何保护此设置:
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的步骤,非常感谢。