User Story: Đăng nhập hệ thống qua SSO Thành phố¶
1. Description¶
Là người dùng hệ thống (Manager, Data Owner, Approver, Staff, Admin), tôi muốn đăng nhập vào hệ thống thông qua cơ chế SSO của Thành phố, để được xác thực danh tính tập trung mà không cần tạo tài khoản riêng cho hệ thống này.
2. Acceptance Criteria¶
2.1 Happy Path¶
AC-001: Chuyển hướng đến SSO khi chưa có session¶
- GIVEN người dùng chưa có session hợp lệ và truy cập URL hệ thống
- WHEN hệ thống phát hiện chưa xác thực
- THEN hệ thống chuyển hướng (redirect) người dùng đến trang đăng nhập SSO Thành phố
AC-002: Xác thực thành công và quay về hệ thống¶
- GIVEN người dùng đã nhập thông tin đăng nhập trên trang SSO và SSO xác thực thành công
- WHEN SSO trả về SAML Assertion hợp lệ chứa thông tin username, email, đơn vị
- THEN hệ thống nhận SAML Assertion, tạo session phía ứng dụng và chuyển hướng người dùng đến màn hình Dashboard (SCR-DASH-10)
AC-003: Ghi nhận audit log đăng nhập thành công¶
- GIVEN người dùng đăng nhập thành công qua SSO
- WHEN session được tạo thành công
- THEN hệ thống ghi nhận audit log bao gồm: thông tin user, thời điểm đăng nhập, địa chỉ IP, kết quả "thành công"
2.2 Alternative Paths¶
AC-004: SSO đã có session hợp lệ (SSO session còn sống)¶
- GIVEN người dùng đã đăng nhập SSO trước đó và session SSO vẫn còn hiệu lực
- WHEN người dùng truy cập URL hệ thống
- THEN SSO tự động xác thực mà không yêu cầu nhập lại thông tin đăng nhập, hệ thống tạo session và chuyển hướng đến Dashboard (SCR-DASH-10)
2.3 Error Cases¶
AC-005: SAML Assertion hết hạn hoặc không hợp lệ¶
- GIVEN SSO trả về SAML Assertion
- WHEN Assertion hết hạn hoặc chữ ký số không hợp lệ
- THEN hệ thống từ chối Assertion và chuyển hướng người dùng quay lại SSO để xác thực lại
AC-006: SSO không khả dụng¶
- GIVEN người dùng truy cập hệ thống và chưa có session hợp lệ
- WHEN hệ thống không thể kết nối đến SSO (SSO không phản hồi)
- THEN hệ thống hiển thị trang lỗi "Hệ thống xác thực không khả dụng - vui lòng thử lại sau"
AC-007: Người dùng không có tài khoản SSO¶
- GIVEN người dùng không có tài khoản trên hệ thống SSO Thành phố
- WHEN người dùng cố gắng đăng nhập trên trang SSO
- THEN SSO từ chối và hiển thị thông báo lỗi trên trang SSO (xử lý phía SSO, ngoài phạm vi hệ thống này)
AC-008: Ghi nhận audit log đăng nhập thất bại¶
- GIVEN xảy ra lỗi trong quá trình đăng nhập (SAML không hợp lệ, SSO lỗi)
- WHEN hệ thống xử lý lỗi
- THEN hệ thống ghi nhận audit log bao gồm: thông tin có sẵn, thời điểm, địa chỉ IP, kết quả "thất bại" và lý do lỗi
3. Business Rules¶
- Hệ thống phụ thuộc hoàn toàn vào SSO để xác thực - không có cơ chế xác thực dự phòng (fallback)
- Giao thức xác thực là SAML 2.0
- Thời gian phản hồi cho toàn bộ luồng đăng nhập (bao gồm redirect + xác thực + callback) phải dưới 3 giây
- Hệ thống cần thiết kế SSO abstraction layer để hỗ trợ thay đổi IdP (Keycloak <-> CAS) mà không ảnh hưởng logic ứng dụng
- Triển khai On-premise: SSO và ứng dụng cùng mạng nội bộ, không qua internet
- Tất cả sự kiện đăng nhập (thành công/thất bại) phải được ghi vào audit log
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¶
- Quản lý tài khoản trên hệ thống SSO (tạo/xóa user trên IdP)
- Đăng ký tài khoản mới trực tiếp trên hệ thống
- Quản lý mật khẩu (hệ thống không lưu mật khẩu)
- Cơ chế xác thực dự phòng (fallback) khi SSO không khả dụng
- Liên kết tài khoản SSO với tài khoản nội bộ (xem Story-002 và Story-003)
- Chọn vai trò khi có nhiều vai trò (xem Story-005)