[Feature] OIDC SSO 支持可选的身份提供方联合登出
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- go
- Lĩnh vực
- authentication
Hướng nghiên cứu
Start by tracing DELETE /api/v1/sessions and the OIDC discovery flow that obtains end_session_endpoint; the issue names these entry points but no source files or tests. Check how local logout clears the session and cookie, then identify where an optional setting can route the browser through the provider logout endpoint. Done means the setting defaults off, local logout still succeeds when provider logout is unavailable, and enabled behavior can be verified with an OIDC provider.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
请描述您的需求或者改进建议.
KubePi v2.0.3 使用 OpenID Connect 登录时,点击页面上的“退出”仅清除 KubePi 本地会话,没有触发 OIDC 身份提供方(IdP)的登出。若浏览器在 IdP 侧仍有会话,用户再次点击 SSO 登录会立即返回 KubePi,无需重新认证。这在共用浏览器或期望“退出后不能无感重新登录”的场景中容易造成误解。
复现步骤:
- 配置支持 OIDC Discovery 和
end_session_endpoint的 IdP(例如 Casdoor),通过 SSO 登录 KubePi。 - 在 KubePi 点击“退出”。
- 再次点击 SSO 登录;由于 IdP 会话仍在,浏览器会直接完成授权并重新进入 KubePi。
目前 DELETE /api/v1/sessions 只清除本地 session 中的 profile,前端退出后刷新页面;OIDC 流程没有使用 Discovery 中的 end_session_endpoint。
建议的通用做法
- 增加“退出时同时退出 OIDC 身份提供方”的可选配置,默认保持现有行为以兼容已有部署。
- 开启时先销毁 KubePi 本地会话并清理会话 Cookie,再通过浏览器跳转到 IdP 的
end_session_endpoint,按 IdP 支持情况传递client_id、已登记的post_logout_redirect_uri,必要时传递id_token_hint。回跳地址应固定或严格校验,避免开放重定向。 - 不要把 access token、refresh token 或 client secret 放入浏览器 URL 或日志。若 IdP 未提供登出端点或调用失败,KubePi 本地退出仍应成功,并清楚提示 IdP 会话可能仍在。
- 本地账号的退出保持原有行为。Token 撤销以及 IdP 主动发起的 back-channel logout 属于不同能力,可另行设计,不应把它们与浏览器端联合登出混为一谈。
期望可用 Casdoor/Keycloak 这类 IdP 验证:开启联合登出后,退出 KubePi 会同时结束当前 IdP 浏览器会话,再次进入 SSO 需要重新认证;关闭该选项时维持现有行为。
- Ngôn ngữ chính
- Go
- Star
- 3k
- Fork
- 375
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của 1Panel-dev/KubePi
-
[Bug] 丢失节点端口Có thể đã có người làm @wanghe-fit2cloud đã nhận 23 ngày trước. Đang mở
1Panel-dev/KubePi#357 · 1 người được giao ·
-
[Bug]WEB的 BUGCó thể làm lại được @wanghe-fit2cloud đã nhận 45 ngày trước và không có pull request nào đang mở. Đang mở
1Panel-dev/KubePi#356 · 1 người được giao ·
-
[Feature]深色和浅色主题同时需要Có thể làm lại được @wanghe-fit2cloud đã nhận 45 ngày trước và không có pull request nào đang mở. Đang mở
1Panel-dev/KubePi#355 · 1 người được giao ·
Tất cả issue của 1Panel-dev/KubePi
Issue tương tự
-
os: RawConn methods of a closed File return internal/poll.ErrFileClosing instead of ErrClosedĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug]: Bedrock invoke-with-response-stream reports `stop_reason: "end_turn"` for tool-use turnsĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
oalders/clodhopper#162 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
component/server severity/minor type/bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
diagnose globalnet reports a failure for every exported headless ServiceCó thể đã có người làm @kurtyoon đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
submariner-io/subctl#1948 ·
Maintainer thường phản hồi trong vòng 1 ngày