Bỏ qua

User Story: Tự động liên kết tài khoản SSO với tài khoản nội bộ đã tạo sẵn

1. Description

Là người dùng đã được Admin tạo tài khoản sẵn (pre-provisioned), tôi muốn hệ thống tự động liên kết identity SSO của tôi với tài khoản nội bộ khi tôi đăng nhập SSO lần đầu, để tôi có thể sử dụng hệ thống với vai trò đã được gán sẵn mà không cần thao tác thêm.

2. Acceptance Criteria

2.1 Happy Path

AC-001: Liên kết tài khoản thành công khi email trùng khớp

  • GIVEN người dùng đăng nhập SSO lần đầu và hệ thống nhận được SAML Assertion chứa email
  • WHEN hệ thống tra cứu trong cơ sở dữ liệu nội bộ và tìm thấy tài khoản đã tạo sẵn (pre-provisioned) có email trùng khớp
  • THEN hệ thống tự động liên kết identity SSO (username, email, đơn vị) với tài khoản nội bộ đã tồn tại

AC-002: Người dùng đăng nhập với vai trò đã gán

  • GIVEN identity SSO đã được liên kết thành công với tài khoản nội bộ có vai trò đã gán
  • WHEN hệ thống hoàn tất quá trình liên kết
  • THEN người dùng được đăng nhập với vai trò đã được Admin gán sẵn và chuyển hướng đến Dashboard (SCR-DASH-10) hoặc màn hình chọn vai trò (SCR-AUTH-10) nếu có nhiều vai trò

AC-003: Cập nhật thông tin từ SSO

  • GIVEN tài khoản đã được liên kết thành công
  • WHEN người dùng đăng nhập SSO các lần tiếp theo
  • THEN hệ thống cập nhật thông tin họ tên (display_name) và đơn vị (organization_unit) từ SSO nếu có thay đổi

AC-004: Mapping đơn vị từ SSO với cây tổ chức nội bộ

  • GIVEN SAML Assertion chứa thông tin organization_unit
  • WHEN hệ thống xử lý liên kết tài khoản
  • THEN hệ thống map đơn vị từ SSO với cây tổ chức đã khai báo trong hệ thống (UC-SYS-003)

2.2 Alternative Paths

AC-005: Đăng nhập lần thứ hai trở đi (đã liên kết trước đó)

  • GIVEN người dùng đã được liên kết identity SSO với tài khoản nội bộ từ trước
  • WHEN người dùng đăng nhập SSO lại
  • THEN hệ thống nhận diện identity đã liên kết, tải thông tin vai trò và quyền từ tài khoản nội bộ, không cần liên kết lại

2.3 Error Cases

AC-006: Đơn vị SSO chưa tồn tại trong cây tổ chức

  • GIVEN SAML Assertion chứa organization_unit chưa được khai báo trong cây tổ chức hệ thống
  • WHEN hệ thống cố gắng map đơn vị
  • THEN hệ thống ghi nhận cảnh báo vào log và liên kết tài khoản với thông tin đơn vị tạm thời (cần Admin xử lý sau)

AC-007: Tài khoản nội bộ bị tạm dừng (inactive)

  • GIVEN email từ SSO trùng khớp với tài khoản nội bộ nhưng tài khoản có trạng thái is_active = false
  • WHEN hệ thống tra cứu tài khoản
  • THEN hệ thống từ chối đăng nhập và hiển thị thông báo "Tài khoản của bạn đã bị tạm dừng - vui lòng liên hệ Admin"

3. Business Rules

  • Email là khóa liên kết duy nhất giữa identity SSO và tài khoản nội bộ. Mỗi email chỉ tương ứng với một tài khoản duy nhất trong hệ thống
  • SSO chỉ cung cấp identity (username, email, đơn vị) - không cung cấp vai trò. Vai trò được Admin gán nội bộ trong hệ thống
  • Việc liên kết chỉ xảy ra một lần (lần đầu đăng nhập SSO). Các lần đăng nhập sau hệ thống sử dụng liên kết đã thiết lập
  • Admin tạo user trước (pre-provision) bao gồm: email, tên, đơn vị, vai trò để khi user đăng nhập SSO lần đầu đã có vai trò sẵn

4. Traceability

Feature: EP-01-001: Đăng nhập SSO & User Provisioning

Related Use Cases:

Screens:

Business Flows:

  • Không áp dụng

Business Entities:

Role Matrix:

Third-Party Integrations:

5. Out of Scope

  • Tạo tài khoản nội bộ (pre-provision) bởi Admin (thuộc Feature EP-01-002)
  • Tự động tạo tài khoản mới khi không tìm thấy email (xem Story-003)
  • Phân quyền vai trò (xem Feature EP-01-003)
  • Quản lý cây tổ chức (xem Feature EP-01-004)