banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Single Sign-On with CAS  XML
  [Article]   Single Sign-On with CAS 19/05/2011 13:48:16 (+0700) | #1 | 237408
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Nhân đọc topic này: /hvaonline/posts/list/38273.html, mình cũng muốn tìm hiểu về CAS để làm Single Sign-On cho mấy sites nội bộ.

Xin ghi lại các bước như sau:

1. Tích hợp CAS với LDAP theo hướng dẫn này: https://wiki.jasig.org/display/CASUM/LDAP

/usr/local/src/cas-server-3.4.7/cas-server-webapp/pom.xml
Code:
<dependencies>
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>cas-server-support-ldap</artifactId>
        <version>${project.version}</version>
    </dependency>
    ...
</dependencies>


/usr/local/src/cas-server-3.4.7/cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml:
Code:
...
       <bean class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler">
	                <property name="filter" value="cn=%u" />
	                <property name="searchBase" value="ou=IT,dc=domain,dc=vn" />
	                <property name="contextSource" ref="contextSource" />
	            </bean>
	        </list>
	    </property>
	</bean>
	<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
        <property name="pooled" value="true" />
        <property name="urls">
        	<list>
            	<value>ldap://localhost/</value>
            </list>
        </property>
		<property name="userDn" value="cn=anonymous,ou=IT,dc=domain,dc=vn" />	
		<property name="password" value="changeit" />	
        <property name="baseEnvironmentProperties">
            <map>
                <entry>
                    <key><value>java.naming.security.authentication</value></key>
                    <value>simple</value>
                </entry>
            </map>
        </property>
	</bean>


Build WAR file with Maven:
Code:
# mvn -Dmaven.test.skip=true package install


Install bằng cách copy cas.war vào thư mục webapps của Tomcat:
Code:
# cp target/cas.war /usr/share/tomcat6/webapps/


Mở browser lên, truy cập: http://<cas_server_ip>:8080/cas/login và login thử với LDAP account sẽ thấy "Log In Successful".

2. Cấu hình SSL cho Tomcat theo hướng dẫn này: http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html

server.xml:
Code:
<Connector port="8444" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
	        keystoreFile="/usr/share/tomcat6/.keystore" keystorePass="changeit
               clientAuth="false" sslProtocol="TLS" />

Thử lại với https://<cas_server_ip>:8444/cas/login.

3. Nối Apache vào Tomcat với mod_jk

workers.properties:
Code:
worker.list=worker1

#
# Defining a worker named ajp13w and of type ajp13
# Note that the name and the type do not have to match.
#
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009


mod_jk.conf:
Code:
LoadModule 		jk_module modules/mod_jk.so

JkWorkersFile 		/etc/httpd/conf/workers.properties
JkShmFile     		/var/log/httpd/jk.shm

JkLogFile     		/var/log/httpd/mod_jk.log
JkLogLevel    		info
JkLogStampFormat 	"[%a %b %d %H:%M:%S %Y] "

<VirtualHost *:80>
	ServerName	monitoring.domain.vn

	JkMount         /cas/* worker1
</VirtualHost>


Virtual host cho Tomcat:
server.xml:
Code:
<Host name="monitoring.domain.vn"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
		<Context path="/cas" docBase="cas"/>

Các bạn chú ý cái "context" nhé.

Test bằng cách gõ: http://monitoring.domain.vn/cas/login trên trình duyệt sẽ thấy nhảy đến trang đăng nhập của CAS.

4. Tích hợp Apache với CAS bằng mod_auth_cas module
(download version mới nhất 1.0.9.1. Mình cài từ yum version 1.0.8.1-2 và đã gặp một số vấn đề)

auth_cas.conf:
Code:
LoadModule auth_cas_module modules/mod_auth_cas.so
CASLoginURL http://monitoring.domain.vn/cas/login
CASValidateURL http://monitoring.domain.vn/cas/serviceValidate
CASValidateServer Off
CASCertificatePath /etc/pki/tls/certs/exported-pem.crt
CASCookiePath /var/cache/httpd/mod_auth_cas_cookies/
CASDebug on
<Location /ganglia>
	AuthType CAS
	AuthName "CAS"
	require valid-user
</Location>


Nếu để CASValidateServer On thì mình gặp lỗi "MOD_AUTH_CAS: Could not perform SSL handshake with monitoring.domain.vn (check CASCertificatePath)", hiện vẫn chưa khắc phục được.

Cuối cùng là truy cập http://monitoring.domain.vn/ganglia xem có được đưa đến trang đăng nhập của CAS không, và sau khi login với LDAP account có được quay lại không.

CAS hỗ trợ: Java, PHP, .NET, Python, Ruby,... đủ cả.
Let's build on a great foundation!
[Up] [Print Copy]
  [Article]   Single Sign-On with CAS 27/05/2011 21:04:24 (+0700) | #2 | 238041
tanvn192
Member

[Minus]    0    [Plus]
Joined: 27/05/2011 02:17:18
Messages: 3
Offline
[Profile] [PM]
Bài viết Quanta rất hay,mình cũng đang làm đồ án về SSO sử dụng CAS,đã tích hợp được CAS với Zimbra,liferay,joomla,drupal và phpBB nhưng đang gặp vấn đề trong việc tích hợp với các sản phẩm HRM như vtiger,oranghrm và mới chỉ giải quyết Single Sign On chứ chưa Single Sign Out.không biết anh quanta đã giải quyết được chưa vì mình thấy có một nơi ứng dụng CAS vào rất hay là VDC https://id.vnn.vn nhưng họ cũng chưa Single Sign Out cho tất cả các dịch vụ được.
Một khó khăn mình đang gặp nữa là do sử dụng LDAP của Zimbra chung cho tất cả các dịch vụ(Người dùng có thể vào zimbra quản lí việc đổi mật khẩu) nhưng lại chưa viết được ứng dụng móc vào cho phép người dùng tự đăng kí thành viên.Nếu sử dụng với OpenLDAP thì mình cũng chỉ có thể cho người dùng có thể tự thay đổi mật khẩu được còn tự create user vẫn chịu thua.
[Up] [Print Copy]
  [Article]   Single Sign-On with CAS 27/05/2011 21:37:52 (+0700) | #3 | 238043
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]

tanvn192 wrote:
Bài viết Quanta rất hay,mình cũng đang làm đồ án về SSO sử dụng CAS,đã tích hợp được CAS với Zimbra,liferay,joomla,drupal và phpBB nhưng đang gặp vấn đề trong việc tích hợp với các sản phẩm HRM như vtiger,oranghrm
 

Cụ thể là vấn đề gì vậy bạn?

tanvn192 wrote:

và mới chỉ giải quyết Single Sign On chứ chưa Single Sign Out.không biết anh quanta đã giải quyết được chưa vì mình thấy có một nơi ứng dụng CAS vào rất hay là VDC https://id.vnn.vn nhưng họ cũng chưa Single Sign Out cho tất cả các dịch vụ được.
 

https://wiki.jasig.org/display/CASUM/Single+Sign+Out

tanvn192 wrote:

Một khó khăn mình đang gặp nữa là do sử dụng LDAP của Zimbra chung cho tất cả các dịch vụ(Người dùng có thể vào zimbra quản lí việc đổi mật khẩu) nhưng lại chưa viết được ứng dụng móc vào cho phép người dùng tự đăng kí thành viên.Nếu sử dụng với OpenLDAP thì mình cũng chỉ có thể cho người dùng có thể tự thay đổi mật khẩu được còn tự create user vẫn chịu thua. 

Bạn tham khảo cái này xem: https://studio.plugins.atlassian.com/wiki/display/JLDAPLOGIN/Jira+LDAP+user+auto-registration+on+login

PS: Sau chấm, phảy, ... thì cách ra một khoảng trắng cho dễ đọc.
Let's build on a great foundation!
[Up] [Print Copy]
  [Article]   Single Sign-On with CAS 30/05/2011 07:44:03 (+0700) | #4 | 238186
tanvn192
Member

[Minus]    0    [Plus]
Joined: 27/05/2011 02:17:18
Messages: 3
Offline
[Profile] [PM]
Khó khăn khi kết hợp CAS với vtigercrm của em là việc xử lí đăng nhập, cho phép Vtigercrm sử dụng các tài khoản từ CAS, Em đã có thể kết nối vtigercrm và sử dụng được ldap Zimbra để đăng nhập. Em làm theo tài liệu hướng dẫn How to install Vtiger and integrate with Cas Server


Code:
Prequirement :
CAS server
Php, Apache
Liferay integrate with Cas (If use VTiger in Liferay as Iframe method)

2. Install & Configure Php:
Reference to http://www.php.net

3. Install & Configure Apache
 http://httpd.apache.org/docs/2.0/install.html

4. Download and Install Vtiger 5.0.2
Reference to http://vtiger.com/index.php

5. Download and build phpCas client
Reference to http://esup-phpcas.sourceforge.net/download.html
Download version : esup-phpcas-0.5.1-1
Build phpCas client (use Ant build on Window or Linux, or Eclipse ant)
Unzip esup-phpcas-0.5.1-1 to your hard disk ex : c:\phpCas.
Create project  phpCas with eclipse (with source at c:\phpCas).
Edit build.properties in folder 'properties'
deploy.home=C:/phpCas/target
Using eclipse ant build to deploy phpCas
If successful you can see CAS folder in C:/phpCas/target

6. Configure Vtiger with CAS server
Add Cas model into vtiger
Copy CAS (C:/phpCas/target) to $Document_Web_Root/vtiger502/modules/CAS
Overwrite 2 new files : Authenticate, Users (vtiger502/modules/Users)
[color=yellow]Users file: Add new function load_user_cas($user_password)[/color]
Authenticate file: Add and modifies something
/* Inserts by Dtha on 05/04/2007 start */
		   	// import phpCAS lib
			require_once('modules/CAS/CAS.php');

			phpCAS::setDebug();

			// initialize phpCAS						
                        phpCAS::client(CAS_VERSION_2_0,'casserver.ntis.myvnc.com',8443,'cas');

			// force CAS authentication
			phpCAS::forceAuthentication();
			/* Inserts by Dtha on 05/04/2007 end */


			global $mod_strings;

			$focus = new Users();

			// Add in defensive code here.
			/* Modifies by Dtha on 05/04/2007 start */
		//$focus->column_fields["user_name"] =to_html($_REQUEST['user_name']);
			//$user_password = $_REQUEST['user_password'];
			//$focus->load_user($user_password);

			$focus->column_fields["user_name"] = phpCAS::getUser();
			$user_password = "no_use";
			$focus->load_user_cas($user_password);
			/* Modifies by Dtha on 05/04/2007 end */
/* Inserts by Dtha on 05/04/2007 start */
You must modifies tree params with your CAS server 's information
			'casserver.ntis.myvnc.com',8443,'cas'

Install somes lib for phpCas client required
[root@vtiger#] export http_proxy=http://your_proxy:port
Install DomXml
php 4  : [root@vtiger#] yum install php-domxml
php 5  : [root@vtiger#] yum install php-dom
Install pear-DB
yum install php-pear-DB
Install pear-Log
yum install php-pear-Log
Install pear-HTTP Request
yum install php-pear-HTTP-Request-1.4.0

7. Start Apache and test now :-)
Open IE and run vtiger login, then you see it wwwect to Cas server login
Then after login, return to Vtiger with user login
8. Using with Liferay portal (using Iframe method)
Login to liferay and add Vtiger info iframe with url :
 http://vtiger.ntis.myvnc.com/vtiger502/index.php?action=Authenticate&module=Users
Logout and login again to Liferay, then go to Vtiger Iframe, you see vtiger page with user login.
Note : Vtiger, Liferay using same username of account (exited in Cas Server-LDAP)


Sau khi làm theo khi vài vtiger đã chuyển hướng sang trang đăng nhập của CAS , đăng nhập thành công xong nó lại chuyển hướng về cái trang login ban đầu của vtigercrm làm thành một vòng lặp. Em đoán do thằng vtigercrm chưa xử lí được thông tin của CAS chuyển sang. Trong hướng dẫn có nói thay đổi 2 file Authenticate, Users (vtiger502/modules/Users), có lẽ do dòng này Add new function load_user_cas($user_password) . Anh xem thử có cách nào giúp em được không vì lập trình em không biết.
[Up] [Print Copy]
  [Article]   Single Sign-On with CAS 26/08/2011 21:35:12 (+0700) | #5 | 245983
dungnguyen1254
Member

[Minus]    0    [Plus]
Joined: 25/08/2011 12:18:34
Messages: 1
Offline
[Profile] [PM]
Bạn Quanta ơi, rất cảm ơn bạn vì hướng dẫn trên.
Mình gặp một lỗi khi dùng lên Build Maven là: Unable to find resource 'org.springframework.flex:spring-flex-parent om...
Không chỉ file trên mà còn rất nhiều file khác cũng báo như vậy. Mình chạy trên nền Ubuntu.
Mong nhận được sự giúp đỡ của bạn. Mình đang làm Luận văn nên rất cần thông tin này.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|