Sunday, August 23, 2009

Central Authentication Service

Central Authentication Service (CAS) là một protocol phục vụ Single Sign-on trên nền web được phát triển tại đại học Yale. Nó cho phép user truy cập nhiều ứng dụng web khác nhau mà chỉ cần login một lần.

Protocol
Protocol CAS bao gồm ít nhất 3 thành phần: web browser, web application và CAS server.
  • Khi web browser truy cập vào web application, application sẽ redirect user tới trang đăng nhập của CAS server.
  • Nếu đăng nhập thành công, CAS server sẽ redirect trở về lại web application, kèm theo một security ticket. Web application sẽ dùng identifier của chính nó và ticket này để kiểm tra với CAS server xem user đó đã đăng nhập hay chưa.
CAS Server Implementations
Hiện nay có 3 bản implement protocol CAS phần server được sử dụng nhiều:
  • Jasig CAS server: Được phát triển bởi tổ chức Jasig, sử dụng ngôn ngữ Java.
  • ESUP CAS server: Một phần của dự án ESUP Portail, sử dụng ngôn ngữ Java.
  • RubyCAS server: CAS server phát triển bằng ngôn ngữ Ruby.
Do chưa biết nhiều về Ruby nên tôi chỉ mới thử qua được 2 server của Jasig và ESUP.
  • Do tôi quen sử dụng Ant nên cài đặt bản của ESUP nhanh hơn, tuy nhiên cấu hình default của bản này lại có giao diện tiếng Pháp. Và giao diện của bản này khó chỉnh sửa vì nó chỉ cho cấu hình các đoạn text và màu sắc đơn giản, khó chỉnh sửa bố cục trang web.
  • Bản cài đặt của Jasig sử dụng Maven để build, do chưa quen với công cụ này nên tôi chưa thử cấu hình nhiều được. Giao diện của bản cài đặt này nằm trong các file JSP nên có thể chỉnh sửa dễ dàng hơn.
Kết hợp CAS vào các ứng dụng web đã có
Các CAS server chỉ làm nhiệm vụ hỗ trợ authenticate, thông tin về các user cần được quản lí bằng một application khác. Vì vậy đầu tiên ta cần xác định sẽ để cho một web application sẵn có quản lí các user hay tạo application mới chuyên dùng cho việc này.

Sau khi triển khai xong CAS server và application quản lí các user, ta cần triển khai các CAS client cho các ứng dụng còn lại để user có thể đăng nhập bằng tài khoản tại CAS server.
Hiện có rất nhiều CAS client cho các ngôn ngữ khác nhau như Java, PHP, Python, Ruby, .NET, ... và các module hỗ trợ CAS cho các web framework như Drupal, Moodle, Django, ...

Một số khái niệm liên quan
  • OpenID: OpenID cho phép user sử dụng một account đã có ở một web site hỗ trợ như Google, Yahoo!, MySpace, ... để login vào một web site khác. Nó khác với CAS ở chỗ user vẫn phải login vào từng site, còn đối với CAS user chỉ cần login một lần.
  • OAuth: OAuth là một protocol cho phép user cấp phép cho một web application truy cập thông tin của mình trên một site khác mà không cần cung cấp thông tin login cho web application đó.

No comments: