在Web Application中集成CAS登录模块

简介: 在Web Application中集成CAS登录模块

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

关于版本问题:

Java客户端 :3.1.11

CASServer版本:3.5.0版本

使用的Tomcat版本是7.0

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

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

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

第二步:被CAS的Filter拦截,重定向到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放到tomcat的webapps目录下即可。


三: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
=============================================================

相关文章
|
6天前
|
前端开发 安全 数据库
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
|
4天前
|
存储 前端开发 搜索推荐
Web前端网站(一) - 登录页面及账号密码验证
页面背景动态是烟花和文字特效与缓缓下落的雪花相结合,在登录表单的旁边还有五个白色光圈以不规则的方式环绕,当鼠标靠近时,会发出彩色的光芒~~~
21 1
Web前端网站(一) - 登录页面及账号密码验证
|
8天前
|
JavaScript 应用服务中间件 Apache
Node.js Web 模块
Node.js Web 模块
12 2
|
19天前
|
前端开发 Java BI
Spring3 Web MVC 集成Jasper Report生成PDF例子
Spring3 Web MVC 集成Jasper Report生成PDF例子
30 7
|
5天前
|
安全 前端开发 Java
Java Web项目登录报Session Error
Java Web项目登录报Session Error
12 0
|
5天前
|
消息中间件 Java Kafka
集成Kafka到Spring Boot项目中的步骤和配置
集成Kafka到Spring Boot项目中的步骤和配置
32 7
|
5天前
|
druid Java 关系型数据库
在Spring Boot中集成Druid实现多数据源有两种常用的方式:使用Spring Boot的自动配置和手动配置。
在Spring Boot中集成Druid实现多数据源有两种常用的方式:使用Spring Boot的自动配置和手动配置。
45 5
|
5天前
|
Java 数据库连接 mybatis
在Spring Boot应用中集成MyBatis与MyBatis-Plus
在Spring Boot应用中集成MyBatis与MyBatis-Plus
35 5
|
5天前
|
前端开发 JavaScript 安全
集成WebSocket在Spring Boot中可以用于实现实时的双向通信
集成WebSocket在Spring Boot中可以用于实现实时的双向通信
22 4
|
5天前
|
安全 Java Maven
在 Spring Boot 中实现邮件发送功能可以通过集成 Spring Boot 提供的邮件发送支持来完成
在 Spring Boot 中实现邮件发送功能可以通过集成 Spring Boot 提供的邮件发送支持来完成
11 2