繁体   English   中英

在会话之间使用刷新令牌

[英]Using refresh tokens between sessions

我正在PHP Web应用程序中实现OAuth2。 有效期为1小时的访问令牌将分发给javascript Web客户端,并提供了刷新令牌。 如果客户端在下一次导航到我的Web应用程序时退出浏览器超过1个小时,则在对资源服务器的初始请求期间,访问令牌不再有效。 然后,资源服务器返回不受保护的页面。

如果我有:

  1. 访问令牌已过期
  2. 有效的刷新令牌
  3. 新会议

资源服务器是否应该返回不受保护的页面,并且使用javascript的客户端尝试刷新访问令牌,如果成功,则强制重新加载页面? 那很常见吗? 还是我错过了一些东西,所以资源服务器没有被调用两次?

当前,客户端将刷新令牌传递到资源服务器,因此从技术上讲,资源服务器可以刷新访问令牌。 但是,RFC 6749似乎不允许这样做,这似乎表明资源服务器永远都不会看到刷新令牌。

“刷新令牌必须在传输和存储过程中保持机密,并且只能在授权服务器和向其颁发刷新令牌的客户端之间共享。”

正如您所指出的,无论如何,永远不会将刷新令牌传递到资源服务器。 刷新令牌仅提供给授权服务器。 但:

浏览器内客户端(例如Javascript客户端)应使用“隐式”授予来获取其访问令牌。 在这种情况下,不会发出刷新令牌。 浏览器内的客户端应该不会有问题,因为在这种情况下用户存在,因此不需要刷新令牌即可获得新的访问令牌:用户将再次向授权服务器进行身份验证,希望利用现有的SSO会话为了那个原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM