cas server +cas client 单点登录配置实例

cas server  配置

首先你要下一个 cas server 。如果你要有所了解的话,可以下载一个cas server source。

使用ide 打开 cas server ,maven 构建,jetty 运行。 


org.eclipse.jetty
jetty-maven-plugin
9.0.5.v20130815


4040


/

0
foo
4041


,通过maven 命令,运行jetty:run.基本上是可以运行的。除非一些依赖没有进来。请单个运行 mvn  clean package.


我们首先希望的是: 可以使用https ,使用http协议。请改一下配置


/WEB-INF/deployerConfigContext.xml 


 class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
 p:httpClient-ref="httpClient" p:requireSecure="false"/>


/WEB-INF/spring-configuration/ ticketGrantingTicketCookieGenerator.xml


p:cookieSecure="false"
p:cookieMaxAge="-1"

p:cookieName="CASTGC"
p:cookiePath="/cas" />


   将参数p:cookieSecure="true"改为p:cookieSecure="false",同理为HTTPS验证相关,TRUE为采用HTTPS验证,与deployerConfigContext.xml的参数保持一致。

   参数p:cookieMaxAge="-1",简单说是COOKIE的最大生命周期,-1为无生命周期,即只在当前打开的IE窗口有效,IE关闭或重新打开其它窗口,仍会要求验证。可以根据需要修改为大于0的数字,比如3600等,意思是在3600秒内,打开任意IE窗口,都不需要验证。


WEB-INF/spring-configuration/ warnCookieGenerator.xml

找到

p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas" />


接下来,我们希望可以通过数据库查询,来验证用户名和密码。


com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/smtp
root
.,mlkjoiu987





 class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">



如果你用了普通的加密,那么请加入一下标签


  class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">

passwordEncoder" ref="passwordEncoder">

        class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" autowire="byName">      

          

至于参数值(Encoder 采用的加密方式)

 MessageDigest messageDigest = MessageDigest
                .getInstance(this.encodingAlgorithm);

可以看一下这段代码就知道了,至于MessageDigest 可以使用哪些值。你可以跟踪一下MessageDigest 的实现

如果你的密码加密特别的复杂,怎么办。例如: SHA256(MD5(password)),那怎么搞。

很简单,我们可以写一个实现类即可,实现org.jasig.cas.authentication.handler.PasswordEncoder接口。



至此,cas-server 端就算配置完成了。至于页面的重写,好吧。我没有做。I'm sorry.


Cas-client 配置

我采用的是web.xml 配置的形式。同时还可以通过其他形式的方式配置,例如:spring,jndi,这些都可以在这里找到。

看一下我的配置吧。希望对大家有帮助。



org.jasig.cas.client.session.SingleSignOutHttpSessionListener


org.springframework.web.context.ContextLoaderListener





CAS Single Sign Out Filter
org.jasig.cas.client.session.SingleSignOutFilter


CAS Single Sign Out Filter
/admin/*



CAS HttpServletRequest Wrapper Filter
org.jasig.cas.client.util.HttpServletRequestWrapperFilter


CAS HttpServletRequest Wrapper Filter
/*



CASFilter
org.jasig.cas.client.authentication.AuthenticationFilter

casServerLoginUrl
http://localhost:4040/login





service
http:///www.smtp1.com:88/admin/login.action



CASFilter
/admin/*



CAS Validation Filter

org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter


casServerUrlPrefix
http://localhost:4040





service
http:///www.smtp1.com:88/admin/login.action



CAS Validation Filter
/admin/*

其他的配置就没什么了,接下来就是从request 中 怎么获取在cas-server 端登陆的username。

很简单的一句话,String remoteUserName=request.getRemoteUser();就可以拿到了,将remoteUserName 放入session 中,就可以了。

同样的应用,复制一份,配置一下jetty。运行。

单点登录功能实现了。



你可能感兴趣的:(j2ee,服務器部署)