今天使用CAS部署实现了单点登录,扩展了界面,也扩展了登陆认证,但是在logout的时候发现一些问题:
前提:两个web应用web1和web2,一个CAS服务端casserver,本机域名:www.mycas.com
问题一:
1.登录了web1,redirect到casserver,casserver认证后,再redirect到web1;
2.http方式 lougout casserver,即http://www.mycas.com:8080/cas/lougout,显示logout成功;
3.访问web1,web2,还是不用验证就能访问,即相当于注销没用;
4.原因是你不通过https来注销,casserver无法"杀"掉它通过https发给你的TGC Cookie,所以你可以关闭浏览器注销.
问题二:
1.登录了web1,redirect到casserver,casserver认证后,再redirect到web1;
2.https方式 lougout casserver1,即https://www.mycas.com:8443/cas/lougout,显示logout成功
3.访问web1不用验证就能访问,但是访问web2的时候就无法访问了,重定向到casserver的登录界面;
4原因是你已经能够访问的东西可以继续访问,CASLogout不能阻止你访问web1,它只能阻止你访问web2,因为你已经被允许访问web1,而web2则还没有,如果你在(第一种情况)的时候,顺带也访问web2,那么你的注销将毫无作用了,CAS无法阻止你访问这两个web,因为你有Service Ticket。
如果你认为Logout就是退出系统,那时不正确的,因为CAS Logout的作用不是这样,它的作用是阻止你继续通过TGC(它简单地清除了IE的TGC Cookie)来获取ST,阻止你获取通向其他web应用的Ticket。所以,用完web1的时候,注销,然后再关闭掉IE就彻底Logout了。
另外也可以增加JS脚本,在logout时将对应的jsessionid清空;另外注销地址要考虑登录时是否有使用HTTPS,登录时使用了HTTPS,则注销时一样要使用HTTPS
(By:Gxmis-alextang)
分享到:
相关推荐
本文将深入探讨phpCAS的源码和调用示例,特别是在使用Redis管理session以及解决无法正常logout问题方面的应用。 首先,理解phpCAS的工作原理至关重要。phpCAS是一个基于PHP的客户端库,它遵循CAS协议与CAS服务器...
-- CAS logout--> <bean id="logout" class="org.apache.shiro.web.filter.authc.LogoutFilter"> ${cas.logout.url}"/> </bean> <!-- CAS认证过滤器 --> ...
* `/logout`:用于用户注销的 URL * `/validate`:用于验证用户身份的 URL * `/serviceValidate`:用于验证服务凭证的 URL * `/proxy`:用于代理身份验证的 URL * `/proxyValidate`:用于验证代理凭证的 URL CAS ...
单点登出(Single Logout,SLO)** CAS服务器不仅支持单点登录,还支持单点登出。用户在任何已登录的应用中登出时,CAS服务器会广播登出请求到所有其他已登录的应用,实现全局登出。 总之,“cas4.0.7+casClient...
- `logoutUrl`: CAS提供的注销地址,用于用户退出登录。 #### 四、配置系统“Forms”参数 接下来,需要配置.NET系统中的“Forms”认证模式,以便更好地与CAS集成。具体配置如下: ```xml ~/Login.aspx" ...
- **/logout**:销毁CAS会话,实现用户登出。 - **/validate**:服务Ticket验证(CAS 1.0)。 - **/serviceValidate**:服务Ticket验证(CAS 2.0/3.0)。 - **/proxyValidate**:代理Ticket验证(CAS 2.0/3.0)。 - ...
- `cas.logout-url`:用户登出的URL。 - `cas.server-tickets-ssl-verification`:是否启用SSL证书验证。 4. **SSO流程**: - 用户尝试访问受保护的资源。 - 客户端检测到用户未登录,将请求重定向到CAS服务器...
在描述中提到的“CAS单点登出问题及解决”,暗示了在实际操作中可能会遇到一些挑战,比如跨域问题、登出通知不及时等,需要通过特定的技术手段来解决。在这个过程中,通常会涉及到以下三个关键类: 1. **Simple...
'logout_url' => 'https://your_cas_server/logout', ], 'proxy' => false, 'validate_cert' => false, ]; ``` 确保将`your_cas_server`替换为实际的CAS服务器地址。 **4. 中间件与身份验证** 在`app/...
phpCAS::logout(); ``` ##### 第三步:CAS 客户端配置 在 `casphp` 目录下的 `login_cas.php` 文件中,需要对 CAS 服务器的相关参数进行配置,包括但不限于: 1. **CAS 服务器的主机名**: ```php $cas_host ...
同时,开启`phpCAS`的调试模式有助于定位问题。 总结来说,`phpCAS`为Laravel项目提供了一种安全、便捷的方式来实现单点登录。通过正确的集成和配置,开发者可以在不牺牲用户体验的同时,确保应用的安全性。理解`...
5. /logout:用于处理用户的登出操作,包括参数传递和响应结果。 6. /validate:是旧版的验证接口,以向后兼容的方式保留。 除了上述接口,CAS协议3.0还定义了CAS实体,这些实体包括: 1. Service Ticket(服务...
.logout().disable() .csrf().disable() .addFilterBefore(casAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class); } @Bean public CasAuthenticationFilter casAuthenticationFilter() {...
7. **中断CAS连接**:使用`phpCAS::logout()`方法可以断开与CAS服务器的连接,同时清除会话信息并重定向到CAS登出页面。 安装和使用phpCas时,你需要确保你的PHP环境满足其依赖条件,比如PHP版本和cURL扩展。你还...
4. **单点登出(Single Logout,SLO)**:CAS 客户端支持单点登出功能,当用户在 CAS 服务器上注销时,所有已认证的服务也会同步注销该用户。 5. **服务验证**:CAS 客户端通过获取并验证从 CAS 服务器返回的票证...
6. **配置SLO(Single Logout)**:除了SSO,CAS还支持SLO,即单点注销。配置客户端应用以支持SLO,当用户在任一应用中注销时,所有其他已登录的应用也将同步注销。 7. **票证验证**:客户端应用需要配置票证验证,...
- **登出**:单点登出(Single Logout, SLO)需要确保用户在一处登出时,其他所有已登录的资源也同时失效。CAS支持SLO,客户端需要正确处理登出请求和清除本地会话。 - **测试**:对SSO系统进行全面的功能和安全测试...
<param-value>http://192.168.156.120:8080/cas/logout</param-value><!--server cas 地址--> <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 --> org.jasig.cas.client.session....
在 CAS 服务器端,配置 `casServerLogoutUrl`,而在 Shiro 中,添加 `logoutFilter` 并设置其 `logoutUrl`。 5. **自定义 Shiro 控制器** - 在 Spring MVC 或其他 Web 框架中,你可以创建一个 Shiro 控制器来处理 ...
### CAS (Central Authentication Service) 服务端核心接口详解 #### 概述 CAS(Central Authentication Service)是一种开源的单点登录(Single Sign-On, SSO)协议和服务框架,主要用于简化跨多个应用程序的安全...