原创作者: liuyf   阅读:2232次   评论:0条   更新时间:2011-05-26    
sakai:2.7.1
cas-server:3.4.3.1
cas-client:3.1.12

关于sakai如何配置单点登录官方有一篇教程,http://confluence.sakaiproject.org/display/~steve.swinsburg/CASifying+Sakai.不过里面使用的cas-client版本较低,目前cas官方最新版本已经是3.1.12。新版本和老版本差异极大,不可能再按照sakai官方给出的教程来配置cas,所以要么使用老版本的cas,要么去cas官方查看文档自己进行配置。我使用了3.1.12版本,为了便于以后查阅,特将配置过程记录下来。
通过web.xml进行配置:
通过编辑/webapp/sakai-login-tool/web-inf/web.xml文件添加如下filter:
首先配置Authentication Filter
<filter>
  <filter-name>CAS Authentication Filter</filter-name>
  <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
  <init-param>
    <param-name>casServerLoginUrl</param-name>
    <param-value>https://yourdomain:port/cas/login</param-value>
  </init-param>
  <init-param>
    <param-name>serverName</param-name>
    <param-value>http://yourdomain:port/client</param-value>
  </init-param>
</filter>

接着配置Validation Filter
<filter>
  <filter-name>CAS Validation Filter</filter-name>
  <filter-class>org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class>
  <init-param>
    <param-name>casServerUrlPrefix</param-name>
    <param-value>https://yourdomain:port/cas</param-value>
  </init-param>
  <init-param>
    <param-name>serverName</param-name>
    <param-value>https://yourdomain:port/clietn</param-value>
  </init-param>
</filter>

然后配置HttpServletRequestWrapperFilter
<filter>
  <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
  <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>

最后配置AssertionThreadLocalFilter
<filter>
  <filter-name>CAS Assertion Thread Local Filter</filter-name>
  <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>

可以看出配置实际上是挺简单的,和使用老版本其实差不多,只是对filter类的引用不同。需要指出的是上面filter的顺序是不可以改变的,另外第一步,第二步可以有多种选择,cas提供了多个不同的filter,具体可以参考官方文档。除了为web.xml添加相应的filter以外,还要配置sakai.properties文件,具体如下:
login.use.xlogin.to.relogin=false
top.login=false
container.login = true
loggedOutUrl=http://localhost:8080/cas/logout?service=http://localhost:8080

#如果同时使用cas登录和sakai内部登录,可以添加如下配置
xlogin.text=Login
xlogin.enabled=true

配置到这里基本已经完成,但是如果你直接使用cas-server中的war包,可能会遇到退出后不能跳转到指定的页面,这时需要修改下cas-server的配置:
	<bean id="logoutController" class="org.jasig.cas.web.LogoutController"
		p:centralAuthenticationService-ref="centralAuthenticationService"
		p:logoutView="casLogoutView"
		p:warnCookieGenerator-ref="warnCookieGenerator"
<!--添加followServiceRedirects-->
		p:followServiceRedirects="true"
		p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator" />

注意使用的cas帐户必须存在于sakai中,否则无法正常登录。

详细参考cas官方文档:https://wiki.jasig.org/display/CASUM/Home

cas-client 3.1配置:https://wiki.jasig.org/display/CASC/CAS+Client+for+Java+3.1

到这一步对于cas的配置久涮完成了,当然如果需要实现单点登出则还需要进行一些配置,这里就不写出来了,官方有相应的文档。

对cas进行相应配置后,还需要配置ssl,如果不是安全连接,cas就不会发布TGC。如何配置ssl就不赘述了,网上有很多资料,这里

将我遇到的一个问题记录一下:

我的sakai和cas服务器是在统一个tomcat里,而另外一个web服务在别的机器上,在配置完成后发现会抛出如下异常
PKIX path building failed: unable to find valid certification path to requested target

虽然知道是数字签名的问题,但是实在不知到如何解决,后来在网上查到需要将数字签名导入,于是将有cas的数字签名通过如下命令导入到
另一台机子,才解决了问题。
keytool -import -trustcacerts -alias cng_domain -file cas.crt -keystore % $JAVA_HOME/jre/lib/scurity/cacerts

[思开社区 http://www.sakai-edu.net]
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics