在Web Application中集成CAS登录模块

简介: 一:安装下载与CAS工作原理关于版本问题:Java客户端 :3.1.11CASServer版本:3.5.0版本使用的Tomcat版本是7.0的下载地址http://developer.jasig.

一:安装下载与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
=============================================================

目录
相关文章
|
1月前
|
存储 数据库 数据安全/隐私保护
实现一个简单的Web应用,要求可以进行用户注册和登录。
实现一个简单的Web应用,要求可以进行用户注册和登录。
23 3
|
2月前
|
前端开发 安全 Java
SpringBoot 实现登录验证码(附集成SpringSecurity)
SpringBoot 实现登录验证码(附集成SpringSecurity)
|
11天前
|
PHP
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
|
1月前
|
前端开发 JavaScript 安全
深入探索 Qt6 web模块 WebEngineCore:从基础原理到高级应用与技巧
深入探索 Qt6 web模块 WebEngineCore:从基础原理到高级应用与技巧
79 0
|
1月前
|
前端开发 JavaScript Java
springboot 集成easy-captcha实现图像验证码显示和登录
springboot 集成easy-captcha实现图像验证码显示和登录
141 0
|
2月前
|
存储 中间件 数据安全/隐私保护
Django教程第3章 | Web开发实战-登录
登录案例、Djiango中间件【2月更文挑战第23天】
53 2
Django教程第3章 | Web开发实战-登录
|
2月前
|
安全 Java 网络安全
【Shiro】第四章 Web项目集成Shiro
【Shiro】第四章 Web项目集成Shiro
65 1
|
3月前
|
数据采集 缓存 JavaScript
Python神器!WEB自动化测试集成工具 DrissionPage
Python神器!WEB自动化测试集成工具 DrissionPage
96 0
|
3月前
|
NoSQL 前端开发 Java
Sa-Token实现分布式登录鉴权(Redis集成 前后端分离)
Sa-Token实现分布式登录鉴权(Redis集成 前后端分离)
Sa-Token实现分布式登录鉴权(Redis集成 前后端分离)
|
3月前
|
小程序 前端开发 安全
Ruoyi-vue前后端不分离集成微信小程序授权登录思路
Ruoyi-vue前后端不分离集成微信小程序授权登录思路
145 0