短会话(Short Sessions)再见/在网络中使用service-workers增强cookie管理的提议

161 阅读3分钟

译者:一个有思想的程序猿

原文链接

我们都喜欢这样的本地应用,它们只询问你登录一次便记住了你,直到你登出。很遗憾,网络不能总是这样工作。

现在这些设备,尤其是移动设备更加私人化,众多站点通过HTTPS传输来降低令牌失窃的风险。网站应该重新考虑短生命周期的cookie策略,并采取更加人性化的长会话。

然而,即使你想使会话保持时间变长,一些站点不会为每个请求验证用户身份信息(也就是说会话缓存一但创建就不会撤回).这通常导致短会话,也就是用户需要频繁登录来重复验证身份,考虑到更换密码这样的情形,需要使已存在的会话在一定时间内失效。

如果这正是你所采用的策略,那么我们有一个更加科学的解决方案能帮助你自动验证无状态的认证缓存。它通过一个二级长生命周期的令牌来刷新存在的短声明周期的认证缓存。借助新的Service Worker模式允许我们通过长生命周期的令牌来定期""登录"",验证用户身份(比如,检查他们时候最近更换过密码,如果是就使会话(session)失效),并不断产生新的短生命周期的认证缓存(cookie).

迁移到安全的Web中长会话(session)的实用建议

在此,我们来介绍被我们称为**2-Cookie-Handoff (2CH)**的技术提案。我们希望通过这篇文章来听到社区有关于此方案可行性以及行业中有关2CH的最佳实践的反馈意见。

Service workers是一种新技术,目前被众多浏览器支持,比如Chrome,FireFox,Opera以及很快被 Edge支持.它们允许你在不修改当前页面的情况下,通过通用代码拦截站点的所有请求。这允许你创建一个 “2CH worker” 来记录你网站所有登录用户,拦截网络请求并交换令牌,就像手机应用一样。

如果你的服务已经有手机应用的调用端口,来获取短令牌(short-lived token),比如OAuth协议。若要在Web上实现同样功能,只需要在service worker调用时更新这个端口,然后返回一个其他页面所期待的格式化的短会话缓存(short-lived session cookie )。

如果你的服务没有这样的端口,可以通过浏览器会话管理(browser session management)来创建一个。

Service workers的双令牌模式很贴近 OAuth 2.0 模式。如果你已经有一个OAuth令牌端口,很有希望通过service workers复用它作为你的网络认证。

你或许很好奇如果用户的浏览器不支持service workers会发生什么。如果你实现了上面方案,他们会毫无察觉并继续使用短会话(short sessions)。

我们已经发布了 客户端和后台的样例. 我们希望你 自己尝试一下 ,并且 回复有关会话管理的调查.