Ajax OAuth访问令牌和页面刷新

Ajax OAuth访问令牌和页面刷新,ajax,html,security,session,oauth,Ajax,Html,Security,Session,Oauth,我可以看到OAuth在一个完全Ajaxified的应用程序中运行良好,因为本地JS代码总是可以将承载令牌重放到服务器上。然而,如果我们有一个页面刷新会发生什么?在这种情况下,我假设我们丢失了令牌,然后通过OAuth重定向过程返回,以获得新的访问令牌。这是否正确,是否有避免这种情况的模式,例如将访问令牌存储在HTML5本地存储中?如果您正在谈论OAuth 2.0,那么在向OAuth 2.0提供商进行身份验证时,您可能可以同时请求和访问(或承载)令牌。刷新令牌应该直接返回给托管web应用程序的服务器

我可以看到OAuth在一个完全Ajaxified的应用程序中运行良好,因为本地JS代码总是可以将承载令牌重放到服务器上。然而,如果我们有一个页面刷新会发生什么?在这种情况下,我假设我们丢失了令牌,然后通过OAuth重定向过程返回,以获得新的访问令牌。这是否正确,是否有避免这种情况的模式,例如将访问令牌存储在HTML5本地存储中?

如果您正在谈论OAuth 2.0,那么在向OAuth 2.0提供商进行身份验证时,您可能可以同时请求和访问(或承载)令牌。刷新令牌应该直接返回给托管web应用程序的服务器,以某种方式存储(可能是会话状态),并且永远不会暴露给浏览器。浏览器可以使用访问令牌向需要它的安全服务/端点发出请求,但它的生存期应该很短(无论是否有页面刷新)。当它过期时(也可能是由于或不是由于页面刷新),客户端应用程序可以向传递刷新令牌的宿主服务器发出请求。然后,服务器可以使用刷新令牌获取新的访问令牌,而无需用户再次登录

在OAuth 2.0规范的第二部分中有一个这样的图表


OAuth 2.0的使用方式有多种不同,具体细节可能因您的特定场景和实现而异,但希望这能让您从较高的层次了解如何避免在访问令牌过期或页面重新加载时提示用户重新验证。

如果您说的是OAuth 2.0,那么您可能可以请求使用OAuth 2.0提供程序进行身份验证时,同时使用和访问(或承载)令牌。刷新令牌应该直接返回给托管web应用程序的服务器,以某种方式存储(可能是会话状态),并且永远不会暴露给浏览器。浏览器可以使用访问令牌向需要它的安全服务/端点发出请求,但它的生存期应该很短(无论是否有页面刷新)。当它过期时(也可能是由于或不是由于页面刷新),客户端应用程序可以向传递刷新令牌的宿主服务器发出请求。然后,服务器可以使用刷新令牌获取新的访问令牌,而无需用户再次登录

在OAuth 2.0规范的第二部分中有一个这样的图表

OAuth 2.0的使用方式有多种变体,具体细节可能因您的特定场景和实现而异,但希望这能让您从较高的层次了解如何避免在访问令牌过期或页面重新加载时提示用户重新验证