签到天数: 2119 天 连续签到: 7 天 [LV.Master]至尊海神IIIIII
|

楼主 |
发表于 2009-5-29 13:41
|
显示全部楼层
CAS 单点登陆配置
CAS 单点登陆配置
准备工作
1、认证中心机器。地址192.168.0.177 域名 aa.cn
2、需要做认证的服务器 地址 192.168.0.105 域名 bb.cn
修改 177 和105 机器的hosts (system32 搜索一下)
177机器
修改:hosts
192.168.0.177 aa.cn
192.168.0.105 bb.cn
105机器
修改:hosts
192.168.0.177 aa.cn
192.168.0.105 bb.cn
下载 cas
http://www.ja-sig.org/products/cas/
本例使用的是
cas-server-3.0.5.zip
cas-client-java-2.1.1.zip
ssl 认证服务器 tocat5.5
客户端resin-2.0.3
认证中心修改与配置
机器177
1、生成keystore 文件
命令行模式下:
keytool -genkey -alias tomcat -vali dity 365 -keyalg RSA -keystore D:\\tomcat.keystore
问姓名时输入:
aa.cn
密码infosea
2、配置tomcat5 的ssl 端口:
conf\\server.conf
<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=\"d:/tomcat.keystore\" keystorePass=\"infosea\" />
访问 localhost:8443 可以访问,说明tomcat5 ssl 配置成功。
3、cas 配置
将cas.war 包拷到tomcat 的webapps 下,访问https://192.168.0.177:8443/cas/login 能正常访问,说明cas 可以正常运行。
配置 jdbcsql 语句认证方式。
cas/web-inf/deployerConfigContext.xml
注意
bean
casDataSource
myjdbcauth
authenticationHandlers 的list 参数。
如果认证需要指定加密类的话,参考其它资料。本例只让cas 简单的运行起来。
<bean id=\"authenticationManager\"
class=\"org.jasig.cas.authentication.AuthenticationManagerImpl\">
<property name=\"authenticationHandlers\">
<list>
<bean
class=\"org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler\" />
<bean
class=\"org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler\" />
<ref bean=\"myjdbcauth\" />
</list>
</property>
</bean>
<bean id=\"casDataSource\" class=\"org.apache.commons.dbcp.BasicDataSource\">
<property name=\"driverClassName\">
<value>oracle.jdbc.OracleDriver</value>
</property>
<property name=\"url\">
<value>jdbc:oracle:thin:@192.168.0.56:1521:glis</value>
</property>
<property name=\"username\">
<value>usrglis</value>
</property>
<property name=\"password\">
<value>usrglis</value>
</property>
</bean>
<bean id=\"myjdbcauth\" class=\"org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler\">
<property name=\"dataSource\" ref=\"casDataSource\" />
<property name=\"sql\"
value=\"select mm as password from dzxxb where upper(dztm) = upper(?)\" />
</bean>
cas 可以根据 cas/WEB-INF/cas-servlet.xml 里的viewResolver 配置装载不同的ui配置文件.
将 cas\\WEB-INF\\view\\jsp 里的sample 拷贝并改名为 newUI
修改里面的文件(文件名的意思很明显)
修改cas-servlet.xml
<bean
id=\"viewResolver\"
class=\"org.springframework.web.servlet.view.ResourceBundleViewResolver\">
<property
name=\"basename\"
value=\"newUI_views\" />
<property
name=\"order\"
value=\"0\" />
</bean>
新建
newUI_views.properties
### Login view (/login)
casLoginView.(class)=org.springframework.web.servlet.view.JstlView
casLoginView.url=/WEB-INF/view/jsp/newUI/ui/casLoginView.jsp
### Login confirmation view (logged in, warn=true)
casLoginConfirmView.(class)=org.springframework.web.servlet.view.JstlView
casLoginConfirmView.url=/WEB-INF/view/jsp/newUI/ui/casConfirmView.jsp
### Logged-in view (logged in, no service provided)
casLoginGenericSuccessView.(class)=org.springframework.web.servlet.view.JstlView
casLoginGenericSuccessView.url=/WEB-INF/view/jsp/newUI/ui/casGenericSuccess.jsp
### Logout view (/logout)
casLogoutView.(class)=org.springframework.web.servlet.view.JstlView
casLogoutView.url=/WEB-INF/view/jsp/newUI/ui/casLogoutView.jsp
### 1.0 validation responses (/validate)
cas1ServiceFailureView.(class)=org.jasig.cas.web.view.Cas10ResponseView
cas1ServiceFailureView.successResponse=false
cas1ServiceSuccessView.(class)=org.jasig.cas.web.view.Cas10ResponseView
cas1ServiceSuccessView.successResponse=true
casServiceSuccessView.(class)=org.springframework.web.servlet.view.JstlView
casServiceSuccessView.url=/WEB-INF/view/jsp/default/protocol/2.0/casServiceValidationSuccess.jsp
casServiceFailureView.(class)=org.springframework.web.servlet.view.JstlView
casServiceFailureView.url=/WEB-INF/view/jsp/default/protocol/2.0/casServiceValidationFailure.jsp
casProxyFailureView.(class)=org.springframework.web.servlet.view.JstlView
casProxyFailureView.url=/WEB-INF/view/jsp/default/protocol/2.0/casProxyFailureView.jsp
casProxySuccessView.(class)=org.springframework.web.servlet.view.JstlView
casProxySuccessView.url=/WEB-INF/view/jsp/default/protocol/2.0/casProxySuccessView.jsp
### CAS error view
serviceErrorView.(class)=org.springframework.web.servlet.view.JstlView
serviceErrorView.url=/WEB-INF/view/jsp/newUI/ui/serviceErrorView.jsp
重启动tomcat ,应该可以看到新的登录页面了。
客户端配置
1、导出证书
keytool -export -file myserver.cert -alias tomcat -keystore d:\\tomcat.keystore
2、客启端导入证书
keytool -import -alias tomcat -file myserver.cert -keystore \"C:\\Program File
s\\Java\\jdk1.5.0_09\\jre\\lib\\security\\cacerts\"
将casclient.jar拷贝到应用的WEB-INF\\lib 下
修改你的应用的web.xml添加filter
<filter>
<filter-name>casfilter</filter-name>
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://aa.cn:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://aa.cn:8443/cas/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>bb.cn:8089</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>casfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
访问网站时就会弹出提示登陆窗了.
登陆后的用户可以从 session 中的到登陆用户的登陆代码
session.getAttribute(\"edu.yale.its.tp.cas.client.filter.user\")
当然还有很多方式验证方式. 可以参考cas 说明. |
|