diff --git a/CHANGELOG.html b/CHANGELOG.html index ad9a8e4..50ac9ae 100644 --- a/CHANGELOG.html +++ b/CHANGELOG.html @@ -1,4 +1,4 @@ - +
@@ -2545,6 +2545,21 @@ main > *:nth-child(n+6) { animation-delay: 0.46s; }本 Changelog 自 2026-05-22 起以 HTML 格式维护。此前之变更可从 main 分支 git log 取得;下表为近期较显著之 commit。
「OAuth 为账户来源与凭证提供者、cdrop 自维护薄账户层 + 自签会话」的折中架构落地(蓝本见仓库 AUTH.md)。一台设备 = 一条会话,吊销即时生效、被吊销设备自动回到未登录态。
request_id / approval_code / 仅新设备私有的 poll_secret),偷拍 QR 无法领取会话;会话只经新设备自身轮询连接下发 cookie。两档:「信任此设备」(scope=full、7 天滑动) / 「仅此次」(scope=guest、1 小时受限),默认偏安全的「仅此次」。访客会话服务端强制受限(requireFullSession 守门)accounts 表(cdrop 侧账户数据、不含凭证,存稳定 match_key 供管理员开启迁移时跨源关联);web_sessions 泛化出 kind / scope / granted_by / stepped_up_at。access token 改 cdrop 自签 HS256(密钥自 CDROP_SESSION_SECRET 域分离派生),脱离 IdP refresh、短 TTL(默认 900s)、载 sid/auth/exchange 先 JWKS 验 id_token 签名(唯一信任锚)再签自签 token,/auth/refresh 仍打 IdP 轮换 refresh_token 但回自签 token。RS256 退出浏览器每请求热路径,仅保留分支供桌面端 loopback 直带 IdP tokenverifySelfToken 每请求按 sid 查会话行,行删即拒 → 吊销在下次请求即生效(不等 TTL)。前端仅在「服务端以 401 确证失效」时清登录态回登录页(短期连接失败 / 5xx 不误清);离线设备下次使用即知,在线设备经 Hub.Kick 关流、约 1s 重连撞 401 即知web_sessions 与原生客户端设备(桌面 / iOS,自 devices 登记呈现,native=true)。吊销网页会话连带删其设备登记、即时从所有列表消失;孤儿 browser 设备由清扫器(DeleteOrphanBrowserDevices)自动清除。原生设备「登出」走 DELETE /api/devices/{name}(同要求 step-up)CDROP_STEP_UP_ENABLED):批准扫码设备 / 吊销会话 / 注销设备等敏感动作要求一次现场 prompt=login 再认证(provider 的 2FA 即在此过),按会话绑定、StepUpMaxAgeSeconds(默认 300s)窗口内不复要求。auth_time 可选(Casdoor 不下发)getUserMedia + jsqr 扫码(不再外跳系统应用、避免开错浏览器);扫码 / 批准等三状态机页整页跳过聚珍(data-jz-skip),修 MutationObserver 与 React 重渲染同子树冲突的 insertBefore 崩溃AUTH.md;commit 待提交页面 / PWA 关闭、或桌面窗口非前台时也能收到系统通知;判定统一为「页面打开走应用内提示,关闭则系统通知」,三端各自落地。
diff --git a/CHANGELOG.src.html b/CHANGELOG.src.html index 2b3b1c4..b20f27d 100644 --- a/CHANGELOG.src.html +++ b/CHANGELOG.src.html @@ -25,6 +25,21 @@本 Changelog 自 2026-05-22 起以 HTML 格式维护。此前之变更可从 main 分支 git log 取得;下表为近期较显著之 commit。
「OAuth 为账户来源与凭证提供者、cdrop 自维护薄账户层 + 自签会话」的折中架构落地(蓝本见仓库 AUTH.md)。一台设备 = 一条会话,吊销即时生效、被吊销设备自动回到未登录态。
request_id / approval_code / 仅新设备私有的 poll_secret),偷拍 QR 无法领取会话;会话只经新设备自身轮询连接下发 cookie。两档:「信任此设备」(scope=full、7 天滑动) / 「仅此次」(scope=guest、1 小时受限),默认偏安全的「仅此次」。访客会话服务端强制受限(requireFullSession 守门)accounts 表(cdrop 侧账户数据、不含凭证,存稳定 match_key 供管理员开启迁移时跨源关联);web_sessions 泛化出 kind / scope / granted_by / stepped_up_at。access token 改 cdrop 自签 HS256(密钥自 CDROP_SESSION_SECRET 域分离派生),脱离 IdP refresh、短 TTL(默认 900s)、载 sid/auth/exchange 先 JWKS 验 id_token 签名(唯一信任锚)再签自签 token,/auth/refresh 仍打 IdP 轮换 refresh_token 但回自签 token。RS256 退出浏览器每请求热路径,仅保留分支供桌面端 loopback 直带 IdP tokenverifySelfToken 每请求按 sid 查会话行,行删即拒 → 吊销在下次请求即生效(不等 TTL)。前端仅在「服务端以 401 确证失效」时清登录态回登录页(短期连接失败 / 5xx 不误清);离线设备下次使用即知,在线设备经 Hub.Kick 关流、约 1s 重连撞 401 即知web_sessions 与原生客户端设备(桌面 / iOS,自 devices 登记呈现,native=true)。吊销网页会话连带删其设备登记、即时从所有列表消失;孤儿 browser 设备由清扫器(DeleteOrphanBrowserDevices)自动清除。原生设备「登出」走 DELETE /api/devices/{name}(同要求 step-up)CDROP_STEP_UP_ENABLED):批准扫码设备 / 吊销会话 / 注销设备等敏感动作要求一次现场 prompt=login 再认证(provider 的 2FA 即在此过),按会话绑定、StepUpMaxAgeSeconds(默认 300s)窗口内不复要求。auth_time 可选(Casdoor 不下发)getUserMedia + jsqr 扫码(不再外跳系统应用、避免开错浏览器);扫码 / 批准等三状态机页整页跳过聚珍(data-jz-skip),修 MutationObserver 与 React 重渲染同子树冲突的 insertBefore 崩溃AUTH.md;commit 待提交页面 / PWA 关闭、或桌面窗口非前台时也能收到系统通知;判定统一为「页面打开走应用内提示,关闭则系统通知」,三端各自落地。