Oct 192018
Thông tin chung
- Single sign on framework: Jasig CAS (Central Authentication Service – http://www.jasig.org/cas).
Kiến thức cơ bản và Tài liệu
- Toàn bộ tài liệu về CAS có tại https://wiki.jasig.org/display/CAS/Home
- IBM WebSphere Portal 6.1 InfoCenter tại http://publib.boulder.ibm.com/infocenter/wpdoc/v6r1/index.jsp
- Zimbra wiki (http://wiki.zimbra.com/)
- Zimbra development documentation trong thư mục ZimbraServer/docs/
- OpenLdap (http://www.openldap.org/)
- JAAS và Trust Authentication Interface for WebSphere
Sơ đồ triển khai SSO cho Cổng TTĐT Asianux và các ứng dụng
Sơ đồ máy chủ và ứng dụng
- Máy chủ Portal (www.asianux.org.vn – IP: ) cài đặt Cổng TTĐT Asianux.
- IBM HTTP Server (/opt/IBM/HTTP)
- IBM WebSphere Application Server – WAS 6.1.0.19 (/opt/IBM/WebSphere/AppServer)
- IBM WebSphere Portal v6.1.0.1 (/opt/IBM/WebSphere/wp_profile)
- phpBB v3 (/opt/www/forum)
- Máy chủ Email (mail.asianux.org.vn – IP: asianux.org.vn/10.0.0.?) cài đặt Zimbra Email Server.
- Email Server (/opt/zimbra), mailboxd chạy trên jetty Application Server (/opt/zimbra/jetty)
- Zimbra Internal Ldap (/opt/zimbra/openldap)
- Máy chủ Database (IP trong 10.0.0.?) cài đặt IBM DB2 LUW v9.
- Máy chủ LDAP và CAS (cas.asianux.org.vn,) cài đặt OpenLdap Server và CAS Server.
- LDAP (OpenLdap, base: dc=asianux,dc=org,dc=vn)
- Nhánh cn=groups,dc=asianux,dc=org,dc=vn chứa các group nhóm NSD
- Nhánh cn=people,dc=asianux,dc=org,dc=vn chứa các tài khoản NSD
- CAS Server (v3, download tại đây http://www.jasig.org/cas/download)
- Application Server: tomcat 6
- Thư mục cài đặt /opt/CAS
- LDAP (OpenLdap, base: dc=asianux,dc=org,dc=vn)
Sơ đồ triển khai CAS
- CASifying WebSphere Portal : cài đặt một CAS Client trên WAS dựa trên cơ chế Trust Association Interceptor (TAI) interface của WebSphere.
- CASifying Zimbra : cài đặt một CAS client trên Zimbra dựa trên cơ chế pre-authentication của Zimbra.
- Khi các ứng dụng (portal, email) cần xác thực NSD, các CAS client tương ứng sẽ trao đổi với CAS server theo một giao thức nhất định (giao thức CAS). CAS server sẽ xác thực dựa trên cở sở dữ liệu LDAP và trả lại kết quả cho các CAS client. Các CAS client sau đó sẽ tiến hành công đoạn xác thực theo cơ chế nội tại của mỗi ứng dụng (TAI hoặc pre-authentication).
- Khi các cơ sở dữ liệu NSD nội tại (ở đây là Zimbra Internal Ldap) thay đổi (ví dụ : thêm, xóa, thay đổi account), cần có một thao tác đồng bộ với External Ldap. Phương án đơn giản nhất là viết một đoạn script đồng bộ giữa 2 Ldap server và cho chạy theo định kỳ.
Cài đặt
Các bước cài đặt
- Cài đặt và thiết lập LDAP server.
- Thêm Ldap Server vào Federated Repository của WebSphere Portal với basedn dc=asianux,dc=org,dc=vn (default Repository của WPS là file repository, base o=defaultWIMFileBasedRealm).
- Cài đặt và cấu hình CAS server.
- Cài đặt và cấu hình CASifying WebSphere.
- Cài đặt và cấu hình CASifying Zimbra.
- Cài đặt và cấu hình Single Sign Out.
- Cấu hình thay đổi login và logout page cho Portal và Email.
- Cài đặt plugin Change Password cho Zimbra
Thêm Ldap ngoài vào WSP Federated Repository
- Làm theo hướng dẫn trong WebSphere Portal 6.1 Info Center, search “federated repository”.
CAS Server
- Theo framework CAS chuẩn, để đảm bảo tính security, CAS server phải được truy cập qua tầng giao thức SSL (https://), nếu không các giao dịch giữa client và server sẽ không được chấp nhận.
- Tuy nhiên, các server Asianux chưa có trusted certificate nên khi truy cập bằng https sẽ hiện lên thông báo (giống như thông báo khi vào mail.vietsoftware.com).
- Vì vậy, tạm thời ban đầu CAS server sẽ được modified đi một chút để có thể chấp nhận giao thức http thông thường, các CAS client cũng vậy.
CASifying WebSphere
- Làm theo hướng dẫn tại https://wiki.jasig.org/pages/viewpage.action?pageId=19314 lưu ý mấy thông số sau:
- Dùng cas-client v2
- <WPSInstallDirectory> = /opt/IBM/WebSphere/wp_profile
- Sửa một chút code sau đó build lại 2 file CasClientWebsphere-x.x.x.jar và casclient-2.1.1.jar
- Interceptor Classname: octo.cas.client.websphere.CasTAI511
- CAS_VALIDATION_URL = http://cas.asianux.org.vn/cas/serviceValidate
- PRINCIPAL_PREFIX= uid= (lưu ý dấu bằng = ở cuối)
- PRINCIPAL_SUFFIX = ,dc=asianux,dc=org,dc=vn (lưu ý dấu phảy , ở đầu)
- STORE_PROXY_TICKET= false (chưa dùng cơ chế proxy ticket)
CASifying Zimbra
- Làm theo hướng dẫn tại https://wiki.jasig.org/display/CAS/CASifying+Zimbra+6.0 lưu ý:
- Dùng cas-client v3.1
- Sửa lại một chút code và build lại file cas-client-core-3.1.x.jar
Single Sign Out
- SSOut là một ứng dụng web nhỏ dùng để đăng xuất (logout) ra tất cả các ứng dụng (portal, email, cas) cùng một lúc khi có một ứng dụng logout.
- Cài đặt trên cùng máy chủ CAS server (cùng tomcat, file SingleSignOut.war), địa chỉ http://cas.asianux.org.vn/SingleSignOut/CasSSOut
- File cấu hình (config.properties) của ứng dụng này chứa thông tin về :
- Các ứng dụng SSO : portal,email,cas
- Đường dẫn login và logout của mỗi ứng dụng
- Đường dẫn logout của portal là http://cas.asianux.org.vn/SingleSignOut/CasSSOut?from=portal và của email là http://cas.asianux.org.vn/SingleSignOut/CasSSOut?from=email
Thiết lập login page cho portal
- Mục đích : đưa file jsp và sửa web.xml trong file wps.ear/wps.ear.
- Để làm được điều này phải đóng lại file wps.ear và redeploy lại (http://publib.boulder.ibm.com/infocenter/wpdoc/v6r1/index.jsp?topic=/com.ibm.wp.zos.doc/admin/wsrpt_secltpa_redeploy.html).
Thiết lập logout page cho portal
- Mục đích: thiết lập đường dẫn logout về địa chỉ Single Sign Out.
- Làm theo hướng dẫn (http://publib.boulder.ibm.com/infocenter/wpdoc/v6r1/index.jsp?topic=/com.ibm.wp.exp.doc_v6101/security/sec_chg_login.html):
redirect.logout=true
redirect.logout.ssl=false
redirect.logout.url=http://cas.asianux.org.vn/SingleSignOut/CasSSOut?from=portal
Thiết lập logout page cho Zimbra
- Mục đích: thiết lập đường dẫn logout về đường dẫn http://cas.asianux.org.vn/SingleSignOut/CasSSOut?from=email
- Cách làm đã nêu trong phần CASifying Zimbra (thiết lập zimbraWebClientLogoutURL bằng zmprov).
ChangeExtLdapPassword
- Cơ chế Change password listener cho phép viết các Zimbra extensions thực hiện một số thao tác trước hoặc sau khi password được đổi trong internal Zimbra LDAP server (http://bugzilla.zimbra.com/attachment.cgi?id=22251).
- ChangeExtLdapPassword extension sử dụng cơ chế Change password listener để đổi password ở external LDAP đồng thời với thao tác đổi password bên trong Zimbra.
- Cài đặt (xem http://blog.zimbra.com/blog/archives/2010/04/extending-zimbra-with-server-extensions.html)
- Build ChangeExtLdapPasswordExt.jar.
- Tạo thư mục /opt/zimbra/lib/changeExtLdapPassword và copy ChangeExtLdapPasswordExt.jar vào đó.
- Restart Zimbra.