Built-in module · WS runtime · 08/7/2026

iam — Định danh & xác thực (workspace) BUILT-IN

Danh bạ user cục bộ workspace, phiên đăng nhập, PAT có scope và UI gán quyền. Sau hợp nhất: iam chỉ giữ định danh & token — mọi quyền nằm ở engine rt_role (một nguồn sự thật).

🎯 Thiết kế đích sau RT-16 + fix cache (P4 review) — hiện trạng: roles cũ song song rt_role, permissionCache mất sau restart, PAT chưa có scope.
1

Feature / BO / Action

FeatureBO chínhAction
userNgười dùng workspace (map từ SSO CP)viewcreateeditreset
sessionPhiên đăng nhập WS (JWT cục bộ)viewrevoke
tokenAccess Token (PAT) scope + hạnviewcreatedeleterevoke
role-adminGán vai trò (đọc/ghi engine rt_role)viewassignconfigure
2

Manifest — khai báo permissions

Permission key theo convention iam.<group>.<feature>.<action>. fields/scopeVars theo plan data-scope (manifest v1.1).

{ "key": "iam", "name": "Định danh & Xác thực", "version": "2.0.0 (đích sau RT-16)", "permissions": [ { "group": "administration", "feature": "user", "label": "Người dùng", "actions": [ "view", "create", "edit", "reset" ] }, { "group": "administration", "feature": "session", "label": "Phiên đăng nhập", "actions": [ "view", "revoke" ] }, { "group": "administration", "feature": "token", "label": "Access Token", "actions": [ "view", "create", "delete", "revoke" ], "scopeVars": [ "current_user_id" ] }, { "group": "administration", "feature": "role-admin", "label": "Vai trò & Quyền", "actions": [ "view", "assign", "configure" ] } ] }
3

Dữ liệu chính

▸ Người dùng

TrườngKiểuBắt buộcGhi chú
Global user idtextTừ CP SSO — không lưu mật khẩu tại WS
UsernametextDuy nhất trong workspace
Email / SĐTtextHiển thị + liên hệ
Trạng tháiboolHoạt động / khóa
Lần đăng nhập cuốidatetime

▸ Access Token (PAT)

TrườngKiểuBắt buộcGhi chú
Tên tokentextMô tả mục đích (vd connector DAT)
Token hashtextChỉ lưu hash — không xem lại được giá trị
Scopelist permissionQuyền hiệu lực = giao(scope, quyền chủ token)
Ngày hết hạndateBắt buộc — không có token vĩnh viễn
Lần dùng cuốidatetimePhát hiện token bỏ quên
Trạng tháienumhoạt động / đã thu hồi

▸ Gán vai trò

TrườngKiểuBắt buộcGhi chú
Người dùngref user
Vai tròref rt_roleEngine là nguồn — iam chỉ là UI
Người gán / thời gianref·datetimeNhật ký thay đổi quyền
4

Ma trận quyền — vai trò × feature

Vai trò theo WS0. R xem · W tạo/sửa · A duyệt · — không có quyền.

FeatureQTHTGIAM_DOCQL_DAO_TAOTUYEN_SINHGIAO_VUGIAO_VIENKE_TOANNHAN_SU
userWR
sessionWR
tokenWR
role-adminW·AR

¹ chỉ bản ghi mình phụ trách · ² chỉ của chính mình · W·A = tạo/sửa + duyệt

Token: mỗi user tự quản token của chính mình (²); QTHT quản toàn bộ.

5

Quy tắc nghiệp vụ & liên kết

Quy tắc

  • Quyền một nguồn duy nhất: engine rt_role — gỡ bảng roles/user_roles cũ sau di cư RT-16
  • PAT bắt buộc scope + hạn; không vượt quyền chủ token
  • Quyền nạp theo epoch — restart không mất, đổi quyền hiệu lực ngay
  • Mọi gán/thu quyền, tạo/thu token → ghi nhật ký

Liên kết chéo

  • cp-identity — SSO đổ identity, membership
  • rt-authz — nguồn quyền duy nhất
  • hrm — Employee.user_id ↔ user
  • portal — học viên self-scope qua user_id

⚠ Câu hỏi mở

  • Lộ trình gỡ bảng roles cũ sau RT-16?
  • PAT có cần cho connector DAT gọi vào ở GĐ1?