在Web Application中集成CAS登录模块

  1. 云栖社区>
  2. 博客>
  3. 正文

在Web Application中集成CAS登录模块

贾志刚 2015-11-06 15:54:00 浏览339
展开阅读全文

一:安装下载与CAS工作原理

关于版本问题:

Java客户端 :3.1.11

CASServer版本:3.5.0版本

使用的Tomcat版本是7.0

下载地址http://developer.jasig.org/cas/

关于CAS认证授权的工作流程如下:


第一步:从浏览器端请求访问web应用主页,web应用是baiscweb

第二步:被CASFilter拦截,重定向到CAS服务器,要求登录

第三步:登录以后CAS重定向浏览器访问跟一个ticket参数

第四步:使用带ticket的参数访问basicweb应用的相关servlet

第五步:向CAS服务器检查张票(ticket)是否合法,合法则可以访问

其中第四步,是图中45两步合并。

二:CAS server war包修改与部署

下载cas相关版本的war包以后,使用zip编辑器打开找到下面这两个文件:

WEB-INF\deployerConfigContext.xml

WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml

deployerConfigContext.xml中的找到这个

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

然后替换为如下:

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

ticketGrantingTicketCookieGenerator.xml文件中找到p:cookieSecure="true"这个内容,然后把true改为false

把上述修改好的两个xml文件重新保存到war包中去。Casserver的修改配置就结束了。把修改好的war放到tomcatwebapps目录下即可。

三:Web应用中的配置(客户端配置)

下面就要在我们自己的Web应用中集成CAS功能,我的web应用是baiscweb,是基于maven的项目,所以首先需要在mavne中添加cas client的包支持。添加如下

<dependency>
	<groupId>org.jasig.cas.client</groupId>
	<artifactId>cas-client-core</artifactId>
	<version>3.1.11</version>
</dependency>

然后在web.xml中添加如下配置实现登录功能:

<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>http://localhost:8080/cas/login</param-value>
	</init-param>
	<init-param>
		<param-name>serverName</param-name>
		<param-value>http://localhost:8080</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>CAS Authentication Filter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

添加如下配置实现Logout功能:

<listener>
	<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<filter>
	<filter-name>CAS Single Sign Out Filter</filter-name>
	<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
	<init-param>
		<param-name>casServerUrlPrefix</param-name>
		<param-value>https://localhost:8080/cas</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>CAS Single Sign Out Filter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

完成以后保存web.xml文件,重新部署basicweb应用到tomcat启动以后输入访问地址http://localhost:8080/basicweb/personInfo

就会自动被重定向到CAS登录页面要求登录。


这里使用的登录是它的默认登录方式,只要用户名与密码相同,即可登录访问,我用的是admin/amdin

关于退出(LogOut):

添加如下代码到你的web应用主页相关位置,即可实现退出功能:

<a href="http://localhost:8080/cas/logout">注销</a>


需要注意的是你的CAS登录Filter必须在所有web应用程序Filter之前

运行Login界面:


后台打印出来的信息:

2015-11-06 15:58:44,353 INFO [org.jasig.cas.web.flow.InitialFlowSetupAction] - <Setting path for cookies to: /cas/>
2015-11-06 15:58:44,397 INFO [com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager] - <Audit trail record BEGIN
=============================================================
WHO: audit:unknown
WHAT: http://localhost:8080/basicweb/personInfo
ACTION: SERVICE_TICKET_NOT_CREATED
APPLICATION: CAS
WHEN: Fri Nov 06 15:58:44 CST 2015
CLIENT IP ADDRESS: 0:0:0:0:0:0:0:1
SERVER IP ADDRESS: 0:0:0:0:0:0:0:1
=============================================================

网友评论

登录后评论
0/500
评论
贾志刚
+ 关注