Cài đặt CAS server trên CentOS 6 - Openroadvietnam/CAS-integration GitHub Wiki

1) Cập nhât hệ điều hành

yum install update

2) Cài đặt Java JDK / JRE

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Sử dụng Java JDK / JRE 7 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

Sử dụng bản jdk-7u75-linux-x64.rpm Upload lên server để cài đặt

rpm  -Uvh jdk-7u75-linux-x64.rpm

Kiểm tra phiên bản java:

java -version

Xóa file download về sau khi cài đặt

rm jdk-7u75-linux-x64.rpm -f

3) Cài đặt Tomcat 7

Download apache-tomcat-7.0.57

cd /usr/share
wget http://mirrors.digipower.vn/apache/tomcat/tomcat-7/v7.0.57/bin/apache-tomcat-7.0.57.tar.gz
tar -xzf apache-tomcat-7.0.57.tar.gz
rm apache-tomcat-7.0.57.tar.gz -f

Tạo file tomcat

cd /etc/init.d
vi tomcat

Lưu với dung sau:

#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80

JAVA_HOME=/usr/java/jdk1.7.0_75
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/share/apache-tomcat-7.0.57

case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;;
stop)
sh $CATALINA_HOME/bin/shutdown.sh
;;
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;;
esac
exit 0

Cấu hình tomcat chạy dạng dịch vụ khi khởi động

chmod 755 tomcat
chkconfig --add tomcat
chkconfig --level 234 tomcat on

Cấu hình firewall mở cộng 8080 để có thể truy cập

iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
service iptables save
service iptables restart

Khởi động tomcat

service tomcat start

Truy cập trình duyệt để kiểm tra.

http://ip:8080

4) Cài đặt CAS Server

  • Download CAS Server 3.5.2 Release.zip tại trang chủ https://www.apereo.org/cas/download

  • Thực hiện giải nén. 

  • Trong gói giải nén có file modules/cas-server-webapp-3.5.2.war đổi tên file này thành cas.war, upload file này lên thư mục: /usr/share/apache-tomcat-7.0.57/webapps

  • Khởi động lại tomcat

service tomcat restart

Nếu nhận được thông báo mầu đỏ:

Non-secure Connection

You are currently accessing CAS over a non-secure connection. Single Sign On WILL NOT WORK. In order to have single sign on work, you MUST log in over HTTPS

Khi đó cần cấu hình tiếp để sử dụng qua https.

Chạy lệnh sau:

/usr/java/jdk1.7.0_75/bin/keytool -genkey -alias tomcat -keyalg RSA

Nhập các thông số tương tự như sau:

Enter keystore password: HXetjOy6TeSeVsS

What is your first and last name?
  [Unknown]:  VuThao
What is the name of your organizational unit?
  [Unknown]:  Vinades
What is the name of your organization?
  [Unknown]:  NukeViet
What is the name of your City or Locality?
  [Unknown]:  HaNoi
What is the name of your State or Province?
  [Unknown]:  ThanhXuan
What is the two-letter country code for this unit?
  [Unknown]:  vn
Is CN=VuThao, OU=Vinades, O=NukeViet, L=HaNoi, ST=ThanhXuan, C=vn correct?
  [no]:  y

Enter key password for <tomcat>
    (RETURN if same as keystore password):
Re-enter new password:

Khi đó hệ điều hành sẽ sinh ra file /root/.keystore

Sửa file server.xml

vi /usr/share/apache-tomcat-7.0.57/conf/server.xml

Tìm đến đoạn:

   <!--
   <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
              maxThreads="150" scheme="https" secure="true"
              clientAuth="false" sslProtocol="TLS" />
   -->

Sửa thành (Thay your-key-password bằng pass đã nhập lúc tạo ở phía trên: HXetjOy6TeSeVsS)

   <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
              maxThreads="150" scheme="https" secure="true"
              keystoreFile="/root/.keystore" keystorePass="your-key-password"
              clientAuth="false" sslProtocol="TLS" />

Mở cổng 8443 sau đó khởi động lại tomcat

iptables -I INPUT 1 -p tcp --dport 8443 -j ACCEPT
service iptables save
service iptables restart
service tomcat restart

5) Cài đặt và cấu hình OpenLdap

Cài đặt OpenLdap

Thực hiện cài đặt các gói openldap-servers, openldap-clients

yum -y install openldap openldap-clients openldap-servers

Cấu hình OpenLdap

Sử dụng lệnh slappasswd để sinh ra password dạng băm dùng để đăng nhập vào tài khoản quản trị OpenLDAP (ở đây sử dụng password là 123456). Copy lại password đã được băm này.

# slappasswd
New password:
Re-enter new password:
{SSHA}5lPFVw19zeh7LT53hQH69znzj8TuBrLv

Chỉnh sửa file olcDatabase={2}bdb.ldif

[root]# cd /etc/openldap/slapd.d/cn\=config
[root]# vi olcDatabase\=\{2\}bdb.ldif

Nếu thuộc tính olcRootPW không tồn tại, tạo ra nó. Sau đó thiết lập giá trị là băm bạn tạo ra từ slappasswd. Ví dụ:

olcRootPW: {SSHA}5lPFVw19zeh7LT53hQH69znzj8TuBrLv

Tìm hai dòng sau

olcSuffix: dc=my-domain,dc=com
...
olcRootDN: cn=Manager,dc=my-domain,dc=com

Sửa lại trường olcSuffix, olcRootDN cho đúng với tên miền đã định trước (ở đây là dc=openroad, dc =vn đối với tên miền là openroad.vn)

Thêm hai dòng sau vào cuối file để giới hạn người xem các hash mật khẩu của người dùng khác.

olcAccess: {0}to attrs=userPassword by self write by dn.base="cn=Manager,dc=openroad,dc=vn" write by anonymous auth by * none
olcAccess: {1}to * by dn.base="cn=Manager,dc=openroad,dc=vn" write by self write by * read

­Sửa file olcDatabase={1}monitor.ldif

với trường olcAccess mặc định sẽ là dc=my-domain, dc=com cần chỉnh sửa để phù hợp với tên domain

vi olcDatabase={1}monitor.ldif

Khởi động openldap:

service slapd start

Để khởi động openldap cùng hệ thống sử dụng lệnh:

chkconfig slapd on
chkconfig --add slapd
chkconfig --level 234 slapd on

Mở cổng 389 đẻ bên ngoài có thể truy cập vào LDAP

iptables -I INPUT 1 -p tcp --dport 389 -j ACCEPT
service iptables save
service iptables restart

Cài đặt LDAP tree

ở đây tạo một file tên là openroad.ldif với nội dung như sau:

dn: dc=openroad,dc=vn
objectClass: dcObject
objectClass: organization
dc: openroad
o : openroad

Để thêm vào cây thư mục LDAP sử dụng command sau:

ldapadd -f openroad.ldif  -D cn=Manager,dc=openroad,dc=vn  -w 123456

Nếu thêm thành công hệ thống trả về:

“adding new entry "dc=openroad,dc=vn" “

Tiếp theo thêm 2 ou là PeoPle và Groups bằng các tạo các file tương tự như group.ldif

dn: ou=People,dc=openroad,dc=vn
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=openroad,dc=vn
ou: Group
objectClass: top
objectClass: organizationalUnit

Thực hiện lệnh add tương tự và có kết quả trả về như sau là đã thêm thành công

ldapadd -f group.ldif -D cn=manager,dc=openroad,dc=vn -w 123456
adding new entry "ou=People,dc=openroad,dc=vn"
adding new entry "ou=Group,dc=openroad,dc=vn"

Tạo user tương tự trên ta tạo file user.ldif với nội dung sau:

dn: uid=admin,ou=People,dc=openroad,dc=vn
cn: admin
mail: [email protected]
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: top
sn: Admin
uid: admin
userPassword: userpassword

dn: uid=test1,ou=People,dc=openroad,dc=vn
cn: test1
displayName: Test1
mail: [email protected]
objectClass: inetOrgPerson
objectClass: top
userPassword: $123456
sn: test1
uid: test1

Thêm vào và kết quả trả về như sau:

ldapadd -f user.ldif -D cn=manager,dc=openroad,dc=vn -w 123456
adding new entry "uid=admin,ou=People,dc=openroad,dc=vn"

adding new entry "uid=test1,ou=People,dc=openroad,dc=vn"

6) Tích hợp LDAP + CAS

Để CAS có thể lấy được thông tin người dùng từ máy chủ LDAP ta cần tải thư viện hỗ trợ tại đường dẫn sau:

http://mvnrepository.com/artifact/org.jasig.cas/cas-server-support-ldap

Chú ý: chọn lựa đúng phiên bản cas hỗ trợ và thực hiện download về và copy file (ở đây dùng phiên bản cas-3.5.2 nên ta download bản support tên cas-server-support-ldap-3.5.2.jar)

Tưong tự tải file spring-ldap-core-1.3.2.RELEASE.jar từ địa chỉ: http://mvnrepository.com/artifact/org.springframework.ldap/spring-ldap-core/1.3.2.RELEASE

Upload các file (cas-server-support-ldap-3.5.2.jar, spring-ldap-core-1.3.2.RELEASE.jar) lên thư mục của CAS server /usr/share/apache-tomcat-7.0.57/webapps/cas/WEB-INF/lib (đây là đường dẫn tùy thuộc trên máy từng người, dựa vào việc cài đặt apache-tomcat ở đâu)

Tiếp tục ta cần chỉnh sửa một số ở file deployerConfigContext.xml tại đường dẫn /usr/share/apache-tomcat-7.0.57/webapps/cas/WEB-INF

vi /usr/share/apache-tomcat-7.0.57/webapps/cas/WEB-INF/deployerConfigContext.xml

Khỏi đông Tìm đến đoạn

<bean 
					class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

Thay bằng đoạn:

			<bean class="org.jasig.cas.adaptors.ldap.FastBindLdapAuthenticationHandler">
				<property name="filter" value="uid=%u,ou=people,dc=openroad,dc=vn" />
				<property name="contextSource" ref="contextSource" />
			</bean>

Tìm đến dòng cuối cùng

</beans>

Thêm lên trên đoạn sau:

<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
  <property name="anonymousReadOnly" value="true" />
  <property name="pooled" value="true"/>
  <property name="userDn" value="cn=Manager,dc=openroad,dc=vn"/>
  <property name="password" value="123456"/>
 <property name="urls"> 
                  <list> 
	 		<value>ldap://127.0.0.1:389</value>
                  </list> 
 </property>
  <property name="baseEnvironmentProperties">
    <map>
      <entry key="java.naming.security.authentication" value="simple" />
    </map>
  </property>
</bean>

Khởi động lại tomcat

service tomcat restart
⚠️ **GitHub.com Fallback** ⚠️