我可以看到 OAuth 对于完全 Ajaxified 应用程序运行良好,因为本地 JS 代码总是可以将 Bearer 令牌重播到服务器。但是,如果我们刷新页面会发生什么?在这种情况下,我假设我们丢失了令牌,然后通过 OAuth 重定向过程返回以获取新的访问令牌。这是否正确,是否有避免这种情况的模式,例如将访问令牌存储在 HTML5 本地存储中?
问问题
995 次
1 回答
1
如果您说的是 OAuth 2.0,那么当您向 OAuth 2.0 提供者进行身份验证时,您可能会同时请求刷新令牌和访问(或承载)令牌。刷新令牌应该直接返回到托管 Web 应用程序的服务器,以某种方式存储(可能是会话状态)并且永远不会暴露给浏览器。浏览器可以使用访问令牌向需要它的安全服务/端点发出请求,但它的生命周期应该很短(无论是否有页面刷新)。当它过期时(同样可能是也可能不是由于页面刷新),客户端应用程序可以向交付刷新令牌的托管服务器发出请求。然后,服务器可以使用刷新令牌来获取新的访问令牌,而用户无需再次登录。
在 OAuth 2.0 规范的刷新令牌部分有一个图表。
OAuth 2.0 的使用方式有多种变体,详细信息可能会因您的特定场景和实现而异,但希望这能让您对如何避免在访问令牌过期或开启时提示用户重新进行身份验证有一个高层次的了解页面重新加载。
于 2013-08-16T01:12:46.600 回答