作者:龍智 (Dragon)
時間:2006-07-09
CAS(Central Authentication Service)是耶魯大學開發(fā)的一個開源的SSO(single sign on,單點登錄)系統(tǒng)。它提供了豐富的客戶端庫,如Java, .NET, PHP, Perl等版本,使用這些庫用戶可以方便地給自己的應用程序加上CAS支持。Acegi security system for Spring是Spring的一個子項目,它為Java EE開發(fā)者提供了一個易于使用的提供認證和授權服務的安全框架。Acegi支持CAS,也可看作是CAS的一個Java版的Client。
以下詳細介紹如何配置CAS以及應用程序,使其利用Acegi和CAS進行用戶的登錄和認證。我將以acegi-security-1.0.1發(fā)布包中附帶的acegi-security-sample-tutorial應用為例,它使用DaoAuthenticationProvider對用戶進行認證,用戶帳號和權限信息保存在一個properties文件中,我將對其進行改造,改造之后,acegi-security-sample-tutorial使用CAS進行用戶認證,授權信息仍從該properties文件讀取,因為CAS只負責認證,不負責授權,所以授權工作交由客戶端Acegi來完成,CAS的用戶源配置為數(shù)據(jù)庫,利用JDBC進行讀取。本文需要讀者對SSO和Acegi有一定的了解。
一.準備工作下載并安裝Tomcat(<a target="_blank" rel="nofollow" >http://tomcat.apache.org/</a>),本文使用的版本是5.5.15;
下載并安裝MySQL(
http://www.mysql.com),本文使用的版本是5.0.16;
下載CAS服務端(
http://www.ja-sig.org/products/cas/),本文使用最新的3.0.5RC2;
下載CAS-JDBC Adapter (
http://developer.ja-sig.org/maven/ca ... ver-jdbc-3.0.5-rc2.jar);
下載Acegi(
http://acegisecurity.org/),本文使用的版本是1.0.1;
二.安裝CAS 解壓縮cas-server-3.0.5-rc2.zip,拷貝target目錄中的cas.war到%CATALINA_HOME%/webapps下即可。運行Tomcat,訪問<a target="_blank" rel="nofollow" href="http://localhost:8080/cas">http://localhost:8080/cas</a>應可看到CAS登錄界面。
三.配置Tomcat支持SSL 由于CAS要求使用https和客戶端進行通信,所以需要配置Tomcat支持SSL,首先介紹如何制作自簽名證書以及將其導入到證書庫。
1. keytool -keystore keystore -alias acegisecurity -genkey -keyalg RSA -validity 9999 -storepass password -keypass password
What is your first and last name?
[Unknown]: localhost
其他隨便填寫即可。
2. keytool -export -v -rfc -alias acegisecurity -file acegisecurity.txt -keystore keystore -storepass password
3. copy acegisecurity.txt %JAVA_HOME%\jre\lib\security
4. copy keystore %CATALINA_HOME %
5. cd %JAVA_HOME%\jre\lib\security
6. keytool -import -v -file acegisecurity.txt -keypass password -keystore cacerts -storepass changeit -alias acegisecurity
接下來,用編輯器打開%CATALINA_HOME%/conf/server.xml,找到
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
這一行默認是被注釋掉的,取消注釋,并加入keystoreFile="keystore" keystorePass="password"這兩個屬性,注意keystoreFile屬性可以使用keystore文件的絕對路徑,也可使用基于%CATALINA_HOME%環(huán)境變量的相對路徑,keystorePass是訪問keystore的密碼,應和上面制作證書時設定的密碼保持一致。
訪問
https://localhost:8443,應彈出一個對話框,告知用戶正要訪問的站點的證書不安全,是否接受,確認接受,應可看到那只熟悉可愛的小貓。