让CAS支持客户端自定义登陆页面——服务器篇

 

 

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://fallenlord.blogbus.com/logs/36907044.html

上篇《让CAS支持客户端自定义登陆页面——原理篇》讲述了一些修改的理论基础,这篇讲解如何对CAS服务器端进行修改。

修改需要基于几个基本原则:

  1. 不影响原有统一登陆界面功能
  2. 客户端应尽量保持简单
  3. 尽量保证原有功能的完整性和安全性

对于第三点,必须事先说明:将登陆页面放到客户端本身就是降低了CAS安全性,这意味着作为服务向外发布的CAS服务器中的用户密码有可能由于客户端的不安全性而导致泄露,整个CAS系统成为了一个“水桶形态”,整个CAS体系的安全性将取决于所有客户端中安全性最低的一个。这也是CAS官方一直不推荐的方式。

接下来我们讲解服务器端修改的详细过程:

首先,修改/WEB-INF/web.xml,为cas增加一个/remoteLogin的映射:

 

然后修改cas-servlet.xml文件,增加我们对/remoteLogin映射的处理,需要增加一个新流程:

 

然后在cas-servlet.xml文件中添加我们上面所配置的remoteController的bean:

 

可以看到上面将请求指向了webflow配置文件/WEB-INF/remoteLogin-webflow.xml文件,我们需要创建此文件并配置其成为我们所需的流程,以下是remoteLogin-webflow.xml全文:

 

以上文件根据原login-webflow.xml文件修改,黄色背景为修改部分。可以看到,我们在流程中增加了remoteLogin Action节点和remoteCallback View节点,下面我们配置remoteLogin节点:
在/WEB-INF/cas-servlet.xml文件中增加remoteLoginAction配置:

 

同时创建com.baidu.cas.web.flow.RemoteLoginAction类:

 

以上黄色背景为修改部分,要求客户端必须传入loginUrl参数,且当客户端传入submit参数时,直接为其提交用户名密码
然后再配置remoteCallbackView显示节点,修改src/default_views.properties文件,增加remoteCallbackView配置:

 

创建/WEB-INF/view/jsp/default/ui/remoteCallbackView.jsp文件:

以上文件注意黄色背景部分validated=true,这里我们与客户端约定,当客户端登陆页面后带有参数validated=true时,不进行票据认证请求。这是因为,客户端登陆页面为http://clienthost/login.jsp,那么当用户访问URL http://clienthost/login.jsp时,客户端会重定向到CAS中央服务器请求TGT认证,但认证失败后CAS中央认证服务器会重定向到客户端登陆页面并显示登陆框,此时客户端必须以某种规则避免重新请求中央认证服务器认证,  在这里我们与客户端约定,当回发的请求为登陆页面且带有参数validated=true时即不转发TGT认证请求,即 http://
clienthost/login.jsp?validated=true 请求客户端不会重新发送TGT认证请求给中央认证服务器

到此,服务器端修改完成,下一篇介绍客户端如何构建

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAS(Central Authentication Service)是一种单点登录协议,用于实现在多个应用系统中进行统一的身份认证和授权。CAS客户端是指集成CAS协议的应用系统,用于与CAS服务器进行通信并实现单点登录功能。 以下是CAS客户端集成单点登录的代码示例: ```java // 引入CAS客户端依赖 <dependency> <groupId>org.jasig.cas.client</groupId> <artifactId>cas-client-core</artifactId> <version>3.6.0</version> </dependency> // 配置CAS客户端 <bean id="casClient" class="org.jasig.cas.client.authentication.CasClientAuthenticationFilter"> <property name="casServerLoginUrl" value="http://localhost:8081/cas/login" /> <property name="serverName" value="http://localhost:8080" /> </bean> // 配置CAS过滤器 <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:8081/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> // 配置CAS单点登出过滤器 <filter> <filter-name>CAS Logout Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Logout Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> // 配置CAS请求单点登出过滤器 <filter> <filter-name>CAS Request Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Request Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 以上代码是一个Java Web应用中集成CAS客户端的示例,通过配置CAS客户端和相关过滤器,实现与CAS服务器的通信和单点登录功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值