dsh web:Launch Token 兑换 Cookie 后仍可复用,是否支持一次性兑换或短时过期? #6028
Unanswered
wuzi-spark
asked this question in
Q&A
Replies: 1 comment 1 reply
|
结论:你观察到的行为与源码一致,而且这是当前设计,不是 bug:launch token 是"进程级共享密钥",不是一次性兑换凭据;DSH 目前既没有"兑换即消费",也没有 token 级 TTL。 源码依据(
|
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
使用
dsh web时,我们注意到启动链接中的?token=...在兑换浏览器 Cookie 后,原链接仍可再次使用。想确认这是预期设计,还是有现成配置或扩展方式可以使 Token 在成功兑换后立即失效。源码依据
查看 browser-auth.ts(commit 5dda764):
processLaunchToken()为同一进程上下文复用 Token。authorizeIndex()校验 Token 后返回303、Set-Cookie和跳转到/,但未看到将 Token 标记为已使用、轮换或检查独立过期时间的逻辑。这里关注的是同一 DSH 进程运行期间的重复兑换,不是声称 Token 跨进程重启永久有效。
复现核对步骤
dsh web,保存带 Token 的启动链接。我们观察到了原链接重复打开仍可访问;上述独立浏览器步骤用于排除已有 Cookie 导致的放行。根据当前源码,预计同一有效 Token 可以再次兑换,欢迎维护者确认。
风险与期望
即使不是云端部署,只要其他人能够访问同一个 DSH 地址,带 Token 的链接一旦被误转发、截图或记录在日志中,对方仍可能在原用户已经登录后,用旧链接建立自己的浏览器会话。跳转去掉 URL 参数可以减少暴露,但不会撤销已经泄露的 Token。
希望可以选择:Token 仅用于一次登录兑换,成功时原子地消费,之后拒绝重复兑换;已签发且有效的 Cookie 继续工作。未使用的 Token 也可配置较短有效期。
想请教的问题
ctx.connection.authorizeIndex(),但未发现明确的兑换钩子。我们理解一次性 Token 无法阻止泄露后被他人抢先兑换;本问题主要希望缩短凭据暴露窗口并阻止成功兑换后的重放,而不是关闭认证。
相关讨论:远程/反向代理场景的浏览器认证 #5828、Token 认证配置诉求 #5631。这里重点询问一次性消费和安全扩展方式。
All reactions