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 URL — serviceDomain 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:user và sso: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 autoSignup ở cấ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.