CAS登入添加手机验证码

该博客介绍了如何在CAS登录过程中添加手机验证码功能,详细步骤包括在casLoginView.jsp中插入相关代码,修改UsernamePasswordCredentials类以包含captcha字段,并根据配置的Class重写QueryDatabaseAuthenticationWithUsernameHandler。同时,文章提出了两个问题,关于UsernamePasswordCredentialsToPrincipalResolver与Credentials的关联,以及何时调用UsernameOnlyCredentialsToPrincipalResolver。

(1):casLoginView.jsp  添加如下信息


1
2
3
4
5
6
7
8
9
10
11
12
13
14
< view-state  id = "viewLoginForm"  view = "casLoginView"  model = "credentials" >
     < binder >
         < binding  property = "username"  />
         < binding  property = "password"  />
         <binding property="captcha" /> 
     </ binder >
     < on-entry >
         < set  name = "viewScope.commandName"  value = "'credentials'"  />
     </ on-entry >
     < transition  on = "submit"  bind =
### CAS 录 URL 中包含 SessionID 的处理方法 当涉及到 CAS (Central Authentication Service) 实现单点录时,URL 中携带 `JSESSIONID` 可能会引发一系列安全性和功能性问题。具体来说,在某些配置环境下,CAS 客户端可能会尝试通过 URL 参数传递 session ID 给服务端[^5]。 #### 解决方案概述 为了防止这种情况发生并提高系统的安全性,可以采取以下措施: 1. **修改 Tomcat 设置** 对于运行在 Tomcat 上的应用程序而言,可以通过调整其配置文件来控制 Cookie 行为。编辑 `$CATALINA_BASE/conf/context.xml` 文件,设置 `<Context>` 元素属性如下所示: ```xml <Context cookies="true" useHttpOnly="true"> <!-- Other configurations --> </Context> ``` 2. **禁用 URL 重写** 确保应用程序不会因为缺少支持 Cookies 浏览器而启用 URL 重写功能。这通常意味着要确保所有的客户端都正确设置了接受 Cookies 的能力,并且服务器端也相应地进行了适当配置以利用这一点。 3. **增强安全性** - 使用 HTTPS 来加密传输数据,从而减少中间人攻击的风险。 - 启用 HttpOnly 标志位,使得 JavaScript 无法访问这些敏感信息。 - 设定适当的 Secure 属性,指示浏览器仅应在 SSL/TLS 连接上发送此 cookie。 4. **代码层面优化** 如果仍然遇到问题,则可以在应用层面上做进一步改进。例如,在 Spring Security 或其他框架中自定义过滤器链,拦截任何试图将 session id 添加到 URL 的操作,并将其转换回基于 cookie 的管理方式。 ```java import javax.servlet.Filter; import org.springframework.security.web.session.SessionManagementFilter; @Bean public Filter springSecurityFilterChain() throws Exception { // ... other filters ... SessionManagementFilter smf = new SessionManagementFilter(securityContextRepository); smf.setAlwaysRespectSessionCreationPolicy(true); http.addFilter(smf).build(); } ``` 上述做法有助于确保即使是在不同域之间跳转的情况下也能维持一致的安全策略。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值