Bỏ qua, đến nội dung

FAQ & Troubleshooting — CAS

Các câu hỏi thường gặp và cách xử lý sự cố khi sử dụng plugin CAS.

Lỗi "Missing ticket" hoặc không nhận ticket

Triệu chứng: Sau khi đăng nhập tại CAS, redirect về Digiforce nhưng không có ticket trong URL.

Nguyên nhân phổ biến:

  1. Service chưa đăng ký trên CAS — CAS server không nhận diện domain Digiforce → không tạo ticket
  2. Service URL pattern không khớp — regex đăng ký trên CAS không bao phủ URL thực tế
  3. CAS redirect sai URLserviceDomain cấu hình không đúng

Giải pháp:

  • Kiểm tra service đã đăng ký trên CAS server
  • Đảm bảo serviceDomain khớp chính xác với domain Digiforce (bao gồm protocol và port)
  • Kiểm tra log CAS server xem lỗi cụ thể

Lỗi "Invalid ticket" khi validate

Triệu chứng: CAS trả về ticket nhưng khi Digiforce validate thì báo INVALID_TICKET.

Nguyên nhân phổ biến:

  1. Ticket đã hết hạn — ticket CAS có TTL rất ngắn (thường 5-10 giây). Nếu mạng chậm hoặc server xử lý lâu, ticket có thể expired
  2. Service URL không khớp — URL gửi trong serviceValidate khác với URL ban đầu khi redirect. CAS so sánh chính xác từng ký tự
  3. Ticket đã được dùng — user refresh trang hoặc quay lại URL cũ chứa ticket đã consumed

Giải pháp:

  • Kiểm tra serviceDomain đúng chính xác (không thiếu/thừa trailing slash)
  • Đảm bảo kết nối mạng giữa Digiforce server và CAS server nhanh
  • Không cho user bookmark URL chứa ticket

XML parsing — cas:user vs sso:user

Triệu chứng: Ticket validate thành công (XML success) nhưng không parse được username.

Nguyên nhân: CAS server dùng namespace prefix khác với mặc định.

Các namespace phổ biến:

PrefixNamespace URIDùng bởi
cas:http://www.yale.edu/tp/casApereo CAS (phổ biến nhất)
sso:Tùy implementationCAS tùy chỉnh

Plugin hỗ trợ cả cas:usersso:user. Nếu CAS server dùng prefix khác, kiểm tra XML response thực tế:

bash
curl "https://cas.example.com/cas/serviceValidate?ticket=ST-xxx&service=https://app.example.com/api/cas:service"

User CAS đăng nhập nhưng không có email

Nguyên nhân: CAS server không trả về attributes hoặc attribute release policy chưa cấu hình.

Giải pháp:

  • Kiểm tra CAS service configuration: bật ReturnAllAttributeReleasePolicy hoặc cấu hình attributes cụ thể
  • Username từ <cas:user> thường là username — nếu cần email, đảm bảo CAS trả về trong attributes

autoSignup nằm ở đâu?

Khác với các plugin auth khác, CAS plugin đặt autoSignupcấp cao nhất:

json
{
  "casUrl": "...",
  "serviceDomain": "...",
  "autoSignup": true
}

Không phải public.autoSignup. Đây là đặc thù riêng của plugin CAS.

CAS Single Logout (SLO) có được hỗ trợ không?

Hiện tại plugin chưa hỗ trợ CAS Single Logout. Khi user logout khỏi CAS, session trên Digiforce vẫn active cho đến khi hết hạn hoặc user logout thủ công.