Core platform · controlplane · 07/7/2026

cp-identity — Định danh & SSO CORE

Lớp định danh toàn cục: User, GlobalSession, OAuth2 authorization-code — đăng nhập một lần ở Control Plane, vào nhiều workspace, mỗi workspace ký session cục bộ riêng.

Đánh giá: ✅ Nền tốt · ⚠ 2 điểm cache · Chi tiết khuyến nghị ở mục 3 — tham chiếu hệ thống phổ biến.
1

Thành phần chính

Thành phầnVai trò
User · GlobalSessionTài khoản toàn cục + phiên đăng nhập CP (cookie 7 ngày)
AuthClient · AuthorizationCodeOAuth2 client per-workspace · code TTL 60s đổi lấy identity
authService · ssoService · globalSessionServiceĐăng ký/đăng nhập · cấp/đổi code · quản lý phiên
Session workspaceJWT cục bộ 24h — token WS A không dùng được ở WS B; CP check membership trước khi cấp
2

Hiện trạng (đọc từ code)

  • Luồng SSO đầy đủ và đúng chuẩn authorization-code; cô lập session theo workspace tốt
  • Cross-check membership trước khi cấp token — chặn truy cập chéo
  • permissionCache rỗng sau khi BE restart → user non-super bị 403 tới khi re-login (ghi chú sẵn trong authorize.js)
  • ⚠ Token PAT không nạp permission vào cache → chỉ super admin dùng được PAT
3

Khuyến nghị — tham chiếu hệ phổ biến

Tham chiếuKhuyến nghị
Keycloak / Auth0Nhúng permission claims (hoặc epoch) vào JWT workspace, hoặc chuyển cache sang store bền (Redis/DB) — hết 403 sau restart, PAT hoạt động đúng
Keycloak single-logoutBổ sung logout lan truyền: đăng xuất CP → vô hiệu session các workspace đang mở (hiện mỗi WS tự hết hạn 24h)
OWASPRate-limit đăng nhập + khóa tạm sau N lần sai (nếu chưa có)
4

Liên kết trong core

  • cp-rbac — nguồn permission đổ vào session
  • cp-workspace — AuthClient sinh lúc provision
  • rt-authz — engine đọc identity từ token
Phân quyền

Ma trận tác nhân × năng lực

Core không phải module nghiệp vụ — thay ma trận vai trò bằng tác nhân × năng lực, kèm cơ chế/quyền gate từng năng lực. R đọc · W thực hiện · A duyệt.

Năng lựcCơ chế / quyền gateSUPEROWNER/QTHTDEVSVCUSER
Đăng ký / đăng nhập CPform + rate-limitW
Global session (của mình)cookie og_global_sessionRW (logout)
Quản lý user CPquyền admin CPW
Cấp authorization code / đổi tokenOAuth2 client per-WSW (đổi code)khởi phát
Quản lý AuthClientquyền admin CPW

SUPER = super admin CP · OWNER/QTHT = chủ workspace / quản trị WS · DEV = developer/publisher · SVC = service-to-service (runtime/hook) · USER = người dùng cuối. Mục ghi (đích) = theo khuyến nghị P1–P5, chưa có ở hiện trạng.