[Article] Single Sign-On with CAS |
19/05/2011 13:48:16 (+0700) | #1 | 237408 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
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! |
|
|
|
[Article] Single Sign-On with CAS |
27/05/2011 21:04:24 (+0700) | #2 | 238041 |
tanvn192
Member
|
0 |
|
|
Joined: 27/05/2011 02:17:18
Messages: 3
Offline
|
|
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. |
|
|
|
|
[Article] Single Sign-On with CAS |
27/05/2011 21:37:52 (+0700) | #3 | 238043 |
|
quanta
Moderator
|
Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
|
|
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! |
|
|
|
[Article] Single Sign-On with CAS |
30/05/2011 07:44:03 (+0700) | #4 | 238186 |
tanvn192
Member
|
0 |
|
|
Joined: 27/05/2011 02:17:18
Messages: 3
Offline
|
|
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. |
|
|
|
|
[Article] Single Sign-On with CAS |
26/08/2011 21:35:12 (+0700) | #5 | 245983 |
dungnguyen1254
Member
|
0 |
|
|
Joined: 25/08/2011 12:18:34
Messages: 1
Offline
|
|
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. |
|
|
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|
|
|