send 接入后台续期仍被线上客户端 offline_access 授权阻塞(#4 后续) #5
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
结论
#4 已在提交
852db97d1a3d573689610532a08b7ea45c1eacc9中完成代码层修复,但当前 send 生产客户端仍未获准请求offline_access,无法取得 Refresh Token,阻塞 send 的后台续期接入。此 issue 是生产客户端配置/上线跟进,不是把已完成的 token-hook 实现认定为失效。实际复现(2026-10-08)
使用 send 当前部署所用的 OIDC_CLIENT_ID(值未记录),读取线上
/.well-known/openid-configuration,向其 authorization_endpoint 发起标准授权请求:只读取第一跳,未登录账号、未同意授权、未交换或输出任何令牌。实际收到 HTTP 303,重定向到 send 的回调地址,并携带:
这证明现有生产客户端的允许 scope 尚不满足新的续期契约。公开 discovery 虽然列出了
refresh_token和offline_access,但它不能替代每个客户端的授权配置。已核对的代码与上线边界
auth-web/src/apps.rs已将offline_access加入受管 scope 白名单,且为显式 opt-in。auth-web/src/oauth.rs已允许在 consent 中授予此 scope。auth-web/src/token_hook.rs已在交换/刷新时读取当前身份、有效组和客户端策略;失败时拒绝签发旧权限快照。hydra/hydra.yml已配置 token hook、五分钟令牌期限和严格刷新轮换;docker-compose.yml已接入 hook 鉴权配置。docs/offline-access.md明确要求客户端先登记offline_access,再由用户显式同意。Production deployment remains pending。当前线上是否已加载完整的新 auth-web、Hydra 配置及 hook 环境变量未由本次请求证明;请在处理本 issue 时确认。不要仅依据该提交说明断定线上一定未部署。本次未运行 auth 的完整协议测试,也未修改 auth 的生产数据。
需要完成的工作
OAUTH2_TOKEN_HOOK_AUTH_CONFIG_VALUE已完整部署,避免只更新前端/客户端 scope 而未启用实时权限 hook。offline_access,保留openid groups、原 client ID/secret、原回调地址及现有准入策略,不创建替代客户端。prompt=consent的重新同意才能获得 Refresh Token,旧的 send 本地 session 不会自动获得该能力。验收标准
invalid_scope,可进入正常登录/同意流程。完成客户端配置和上线确认后,send 才能继续实现并验收串行刷新、原子替换轮换令牌、ID Token 校验与五分钟权限更新。按用户指示,send 的接入目标暂时阻塞,不部署半可用续期方案。
关闭原因:本问题是 send 客户端的接入配置,不是 auth 上游代码缺陷。维护者已为现有客户端启用 offline_access;此前应直接协调客户端 scope 配置,不应作为新的上游问题提交。auth #4 的代码修复不受此影响。本评论记录维护者确认,不代表已完成生产刷新全流程验收。