Admin Portal
Hướng dẫn sử dụng

UTEHY Identity Platform

Hệ thống đăng nhập tập trung (SSO) của Trường Đại học Sư phạm Kỹ thuật Hưng Yên — một lần đăng nhập, truy cập mọi ứng dụng đại học.

Swagger API

1. Tổng quan

UTEHY Identity Platform là Identity Provider (OpenID Connect / OAuth2) tại domain sso.edtech.io.vn. Admin Portal này dùng để quản trị người dùng, tổ chức, phân quyền và giám sát bảo mật.

Auth Service
API + OIDC · cổng 3001
Admin Portal
Giao diện quản trị · cổng 3100
Ứng dụng UTEHY
Portal, LMS, QA, Survey, Library

2. Đăng nhập

  1. Mở /login
  2. Nhập tên đăng nhập hoặc email và mật khẩu. Tài khoản bootstrap mặc định: admin / ChangeMe@UTEHY2026!
  3. Nếu đã bật MFA, nhập mã 6 số từ Google Authenticator.
  4. Sau khi đăng nhập thành công, hệ thống chuyển tới Dashboard.
Đổi mật khẩu admin ngay trong Settings sau lần đăng nhập đầu tiên.

4. Vai trò & phân quyền

Mỗi user có một role. Role quyết định tập permission (ví dụ user:create, faculty:manage).

RoleMô tả
SUPER_ADMINToàn quyền hệ thống
ADMINQuản trị Identity Platform
RECTOR / VICE_RECTORBan Giám hiệu — xem toàn trường
DEAN / VICE_DEANBan chủ nhiệm khoa — phạm vi khoa
HEAD_OF_DEPARTMENTTrưởng bộ môn
LECTURER / STAFFGiảng viên / cán bộ
STUDENT / ALUMNI / GUESTSinh viên / cựu SV / khách

5. Phạm vi dữ liệu (Data Scope)

Mỗi user có thể gắn facultyId, departmentId, programId. Middleware ScopeGuard chỉ cho phép xem/sửa dữ liệu trong phạm vi của mình. Các role toàn cục (SUPER_ADMIN, ADMIN, RECTOR, VICE_RECTOR) không bị giới hạn khoa/bộ môn.

  • Dean → quản lý user/CTĐT trong khoa của mình
  • Head of Department → phạm vi bộ môn
  • Lecturer / Student → chủ yếu đọc thông tin liên quan

6. Tích hợp ứng dụng (OIDC)

Ứng dụng UTEHY đăng nhập qua Authorization Code + PKCE. Đăng ký client tại menu Clients (quyền CLIENT_MANAGE): tạo client, bật PKCE, lưu clientSecret (chỉ hiện một lần; có thể rotate). Ví dụ cấu hình:

SSO_ISSUER=https://sso.edtech.io.vn
SSO_CLIENT_ID=graphkt-edtech
SSO_CLIENT_SECRET=xxxxxxxx
SSO_REDIRECT_URI=https://edtech.io.vn/auth/callback

Luồng: App → /oauth2/authorize → đăng nhập SSO → nhận code → đổi token tại /oauth2/token → lấy profile tại /oauth2/userinfo.

Client mẫu đã seed: portal-utehy, lms-utehy, qa-system, survey-utehy, library-utehy.

7. Bảo mật & MFA

  • Mật khẩu băm Argon2id; JWT ký RS256.
  • Refresh token xoay vòng; phát hiện tái sử dụng sẽ thu hồi cả family.
  • Khóa tài khoản sau 5 lần đăng nhập sai.
  • Bật MFA: vào Settings → Generate QR → quét bằng Google Authenticator → nhập mã 6 số → Enable.
  • Thu hồi phiên lạ tại menu Sessions.

8. Xử lý sự cố thường gặp

Đăng nhập sai / user không tồn tại
Chạy seed: cd apps/auth-service && npm run prisma:seed
Dashboard báo Unauthorized / 401
Đăng xuất rồi đăng nhập lại. Kiểm tra Local Storage có utehy_access_token.
CORS / Network error từ trình duyệt
Đảm bảo auth chạy ở :3001 và CORS_ORIGINS có http://localhost:3100. Restart auth sau khi sửa .env.
Quên mật khẩu admin
Dùng API forgot/reset-password, hoặc reset qua DB / seed lại (môi trường dev).

© UTEHY ICT — UTEHY Identity Platform Guide