无废话CAS单点登录配置全过程.docx
《无废话CAS单点登录配置全过程.docx》由会员分享,可在线阅读,更多相关《无废话CAS单点登录配置全过程.docx(18页珍藏版)》请在冰豆网上搜索。
无废话CAS单点登录配置全过程
CAS配置全过程
申明:
我使用的是
3.4.6版本,在路径上、文件名上可能与您的版本不一样,请务必看清您的CAS版本。
在这里我没有写过多的废话,里面属性的作用、证书的制作等都属于额外的话题,这里就是将CAS部署、运行起来。
至于其他的东西,可以慢慢研究。
写在前面的话
看了下面的文字说明如果还是搞不明白这么回事的或遇到什么疑难杂症的,请加入我的QQ群
(),群里没几个人,聊起来方便。
在CAS上我也有很多没有解决的问题(例如防止重复登录),大家一起共同探讨。
第一节:
先走通技术障碍
第一步:
环境部署
下载CAS服务器并解压,在此处我的目录是D:
\ProgramFiles\ApacheSoftwareFoundation\cas-server-
3.4.6,您可以根据实际情况解压。
打开cas-server-
3.4.6\modules,将其中的cas-server-webapp-
3.4.
6.war拷贝至您的ApacheTomcat的WebApps目录下。
改名为cas.war(为了方便)并启动Tomcat,启动完成后关闭Tomcat。
在WebApps下会看到cas工程文件夹。
将cas-server-
3.4.6\modules下的cas-server-support-jdbc-
3.4.
然后将Oracle数据库驱动加入到cas工程的lib下。
第二步:
配置数据库验证
r"/>打开cas/web-inf/deployerConfigContext.xml,找到如下代码:
将原来的代码其替换成如下代码:
"/>
其中,property元素的各个配置参数的具体含义是可以在网上找到,里面的sql语句根据您自己的数据库设计编写。
Ref参照的节点如下:
oracle.jdbc.driver.OracleDriverjdbc:
oracle:
thin:
@youripaddress:
1521:
dbnametiger
tiger
里面详细的设置用xml诠释的非常清楚,不再解释,根据自己的情况来改变里面的参数。
注意:
这个节点的所处位置是这样的:
仔细看dataSource这个bean的根节点是beans。
是与authenticationManager是并列的关系。
将代码折叠起来看会看的更清楚一些。
第三步:
配置自己的Web工程
在自己的Web工程里加入cas-client-core.jar,然后在web.xml中加入以下代码:
CASAuthenticationFilter
org.jasig.cas.client.authentication.AuthenticationFilter
--CAS服务端登录地址-->
casServerLoginUrl
http:
//localhost:
80/cas/
serverName
http:
//localhost:
80
CASAuthenticationFilter
/index.html
标红的地方您可以自己选择过滤,如果你想验证所有的请求,就/*就可以了。
自此,您就可以登陆http:
//localhost:
80/youwebproject进行登陆了。
第二节:
完善我们的配置
第一步:
完善自己的Web工程的Web.xml
大家如果按照上面的配置方法去配置,在最后的filter采用/*的话,您可能会发觉您原来的页面中的图片、JS、CSS都加载不进来了。
这是CAS做了限定,不过不用担心,将以下配置加入到您的web工程的web.xml下就可以了,注意看红色部分是新增的:
--CASFilter-->
CASSingleSignOutFilter
org.jasig.cas.client.session.SingleSignOutFilter
CASAuthenticationFilter
org.jasig.cas.client.authentication.AuthenticationFilter
--CAS服务端登录地址-->
casServerLoginUrl
http:
//localhost:
80/cas/
serverName
http:
//localhost:
80
CASValidationFilter
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
casServerUrlPrefix
http:
//localhost:
80/cas
serverName
http:
//localhost:
80
CASHttpServletRequestWrapperFilter
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
CASAssertionThreadLocalFilter
org.jasig.cas.client.util.AssertionThreadLocalFilter
CASSingleSignOutFilter
/*
CASAuthenticationFilter
/*
CASValidationFilter
/*
CASHttpServletRequestWrapperFilter
/*
CASAssertionThreadLocalFilter
/*
如果您看到上面的东西有点头晕不知道放在那里的的话,我现在将我的web.xml配置全部贴上来,注意标红的地方就是CAS的配置:
xmlversion="
1.0"encoding="UTF-8"?
>
2.5"xmlns="http:
xmlns:
xsi="http:
3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="http:
http:
5.xsd">
--配置Log4j的xx监听-->
log4jConfigLocation
/WEB-INF/log4j.properties
log4jRefreshInterval
600
webAppRootKey
portal.web.root
contextConfigLocation
classpath:
applicationContext*.xml
--CASFilter-->
CASSingleSignOutFilter
org.jasig.cas.client.session.SingleSignOutFilter
CASAuthenticationFilter
org.jasig.cas.client.authentication.AuthenticationFilter
--CAS服务端登录地址-->
casServerLoginUrl
http:
//localhost:
80/cas/
serverName
http:
//localhost:
80
CASValidationFilter
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
casServerUrlPrefix
http:
//localhost:
80/cas
serverName
http:
//localhost:
80
CASHttpServletRequestWrapperFilter
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
CASAssertionThreadLocalFilter
org.jasig.cas.client.util.AssertionThreadLocalFilter
--添加过滤器过滤网页文本字符集编码格式-->
characterEncodingFilter
encoding
utf-8
--添加session的过滤器改变session为页面级生命周期-->
hibernateFilter
org.springframework.orm.hibernate
3.support.OpenSessionInViewFilter
singleSession
false
struts2
org.apache.struts
2.dispatcher.FilterDispatcher
struts.devMode
false
CASSingleSignOutFilter
/*
CASAuthenticationFilter
/*
CASValidationFilter
/*
CASHttpServletRequestWrapperFilter
/*
CASAssertionThreadLocalFilter
/*
characterEncodingFilter
*.do
hibernateFilter
/*
struts2
/*
org.jasig.cas.client.session.SingleSignOutHttpSessionListener
org.springframework.web.util.Log4jConfigListener
--Spring启动监听-->
org.springframework.web.context.ContextLoaderListener
org.springframework.web.util.IntrospectorCleanupListener
--session超时定义,单位为分钟-->
20
BASIC
现在,访问您的web应用,在登录后就不会有CSS等资源加载不上来了。
第二步:
完善CAS,让用户登录返回更多信息
首先找到CAS的deployerConfigContext.xml,找到节点ID为attributeRepository的bean,将其注释,加入以下配置,配置的参数根据您的系统自己定义。
class="org.jasig.services.persondir.support.jdbc.SingleRowJdbcPersonAttributeDao">
--以下注释掉的原因是暂时没有解决中文字符集的问题-->
---->
您可能注意到上面的注释,对的,在默认的环境下,CAS是不支持中文参数的传递的,当然,这个问题出现在编码上,您可以查找相关资料解决这个问题(我在网上找的都没有解决)。
然后在
X:
\apache-tomcat-
6.0.30\webapps\cas\WEB-INF\view\jsp\protocol\
2.0目录下找到casServiceValidationSuccess.jsp,这个