在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)是否合法,合法则可以访问

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

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

相关文章
|
人工智能 网络协议 Java
RuoYi AI:1人搞定AI中台!开源全栈式AI开发平台,快速集成大模型+RAG+支付等模块
RuoYi AI 是一个全栈式 AI 开发平台,支持本地 RAG 方案,集成多种大语言模型和多媒体功能,适合企业和个人开发者快速搭建个性化 AI 应用。
3425 77
RuoYi AI:1人搞定AI中台!开源全栈式AI开发平台,快速集成大模型+RAG+支付等模块
【Azure 应用服务】Web App Service 中的 应用程序配置(Application Setting) 怎么获取key vault中的值
【Azure 应用服务】Web App Service 中的 应用程序配置(Application Setting) 怎么获取key vault中的值
369 0
|
Java 开发工具 Spring
【Azure Application Insights】为Spring Boot应用集成Application Insight SDK
本文以Java Spring Boot项目为例,详细说明如何集成Azure Application Insights SDK以收集和展示日志。内容包括三步配置:1) 在`pom.xml`中添加依赖项`applicationinsights-runtime-attach`和`applicationinsights-core`;2) 在main函数中调用`ApplicationInsights.attach()`;3) 配置`applicationinsights.json`文件。同时提供问题排查建议及自定义日志方法示例,帮助用户顺利集成并使用Application Insights服务。
496 8
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
1291 7
|
小程序 测试技术 iOS开发
Python和Web--模块cgi的简单用例
Python和Web--模块cgi的简单用例
436 1
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
1280 1
|
前端开发
炫酷登录页大变身:5分钟带你入门Web动效设计
炫酷登录页大变身:5分钟带你入门Web动效设计
|
jenkins 持续交付 开发工具
"引爆效率革命!Docker+Jenkins+GIT+Tomcat:解锁持续集成魔法,一键部署Java Web应用的梦幻之旅!"
【8月更文挑战第9天】随着软件开发复杂度的增加,自动化变得至关重要。本文通过实例展示如何结合Docker、Jenkins、Git与Tomcat建立高效的持续集成(CI)流程。Docker确保应用环境一致性;Jenkins自动化处理构建、测试和部署;Git管理源代码版本;Tomcat部署Web应用。在Jenkins中配置Git插件并设置项目,集成Docker构建Tomcat应用镜像并运行容器。此外,通过自动化测试、代码质量检查、环境隔离和日志监控确保CI流程顺畅,从而显著提高开发效率和软件质量。
420 3
|
JavaScript 应用服务中间件 Apache
Node.js Web 模块
10月更文挑战第7天
242 0
|
JavaScript 前端开发 应用服务中间件
Node.js Web 模块
Node.js Web 模块