开始研究sso。
选了CAS,毕竟老牌开源sso工具,网上查了下据说80%的sso技术都是基于cas。
其他东西不说了,什么ssl,cas server部署什么的,网上都很多,也都写的很好。
这里仅记录一点自己实现中比较细的地方。
shiro里面一般在做 AuthenticationInfo的时候返回的info里面的principals一般都不会是简单的string(用户名),应该都是自己包装过的User对象。
我这边的demo系统也不例外。这次搭sso demo之前先弄了最简单的两个app实验,就是只有最简单的一个jsp页面,通过配置web.xml来做,一小时就搞定了,的确是很方便。
但是在shiro整合中发现在server认证通过后跳回原系统就报错。
整个CAS的认证过程已经到了第6步,认证服务器已经给client返回了用户名,所以这个错误应该和server没关系,是cilent本身的问题。
设断点跟踪后发现是token和生成的info不能匹配导致出问题。在不用CAS的情况下一般就是指输入的密码出错导致的。
顿时莫名其妙,认证都不在client进行了居然还会有这种错误。
后来发现是用的自定义的principals对象在copy代码过程中忘记改了。。。
在CasRealm标准实现中,credentials用的是ticket
return new SimpleAuthenticationInfo(principalCollection, ticket);
结果在我自己改写的过程中
return new SimpleAuthenticationInfo(new ShiroUser(user.getId(),
user.getUserName(), user.getRealName()),
[color=red]user.getPassword()[/color], getName());
copy过来的时候没改成ticket。
事后总结思考:事情虽小,但是其实解决过程也搞了两三个小时。不过最终还是理解了CAS和shiro的交互过程,最终在shiro的认证密码其实用的是返回的ticket。
在网上找的一些文章好像都没有着重强调这一点。
“纸上得来终觉浅,绝知此事要躬行”。
分享到:
相关推荐
1.如果客户端项目采用shiro控制权限 则需要将cas-client 认证过滤交给shiro来管理 2.从shiro下载相应版本的shiro-cas-xxxx. Jar或者在maven里直接添加
2. 客户端配置:在应用中,你需要配置Shiro来使用CAS作为其认证机制。这通常涉及配置`CasRealm`,并指定CAS服务器的URL和其他相关参数。 3. SSO登录流程:用户首次访问受保护资源时,会被重定向到CAS服务器进行登录...
标题 "cas+shiro+spring实例" 涉及到的是一个集成CAS(Central Authentication Service)和Apache Shiro的Spring应用程序实例。这个实例是专为初学者设计的,旨在帮助他们理解和实现基于CAS的单点登录(Single Sign-...
2. **CAS客户端配置**:然后,我们需要在SpringMVC应用中配置CAS客户端,包括设置CasServerUrlPrefix(CAS服务器的URL)、serverName(当前应用的URL)等属性,以便应用能够与CAS服务器通信。 3. **Shiro集成**:接...
spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库生成语句,采用的...
然后clean install tomcat7:run 就能跑起来,注意要修改node1和node2里的shiro.properties配置文件,要配置登录成功成功返回的路径 我的访问的分别是: 服务端: http://localhost:8050/cas-server 客户端:...
2. 配置SSO客户端:在项目中集成Shiro框架,配置Shiro的CasFilter,指定CAS服务器的地址和相关参数。 3. 配置HTTPS:为服务器申请并配置SSL证书,确保整个SSO过程在安全的HTTPS环境下进行。 4. 测试与调试:验证用户...
《CAS+Shiro客户端源码解析与应用》 CAS(Central Authentication Service)是耶鲁大学开发的一款开源的身份验证系统,其主要功能是为Web应用程序提供单一登录(Single Sign-On,SSO)服务。Shiro则是Apache组织的...
- the cas-shiro-demo-app module is a demo web application which uses the CAS Shiro support library with protected area requiring CAS authentication : http://shiro.apache.org/cas.html - the cas-shiro-...
在 Shiro 应用的 web.xml 中,配置 CAS 的客户端过滤器,以便在用户访问受保护资源时重定向到 CAS 登录页面。 通过以上步骤,Shiro 就能够与 CAS 3.5 进行集成,实现统一的身份验证。用户在访问需要认证的资源时,...
- 在 Shiro 的配置文件 `shiro.ini` 中,我们需要添加 CAS 相关的配置项。比如,定义 CAS 的服务地址(serviceUrl)、Ticket验证URL(casServerLoginUrl)以及票据验证过滤器(casFilter)。 - 使用 `CasRealm` 类...
首先,`context-param` 部分指定了CAS客户端与Shiro的配置文件路径,这里设置为 `classpath*:/cas-client-shiro.xml`。这个配置文件将包含关于CAS服务器的URL、服务验证URL等信息,以及Shiro的 Realm 设置,用于定义...
这篇文章将详细讲解如何将CAS(Central Authentication Service)、Shiro(Apache Shiro)和Ehcache集成到Spring应用程序中,提供一个完整的实现流程。这个集成方案主要用于实现统一的身份验证和授权,提升系统的...
3. **配置 Shiro**:在 Shiro 配置文件(如 `shiro.ini` 或 `shiro.xml`)中,你需要指定 CAS 服务器的 URL,以及你的应用如何验证服务票证。这包括 CAS 登录 URL、服务验证 URL 和 CAS 出票 URL。 4. **创建 ...
项目中提供的`shiro-cas-pac4j`可能包含Shiro的配置文件、CasClient的配置及相关的过滤器设置,而`cas`文件可能包含了CAS服务器的相关配置和部署脚本。通过研究这些文件,可以深入理解SSO集成的细节。 总结来说,这...
2. **配置ShiroFilter**:在`web.xml`中配置`shiroFilter`,并确保将CAS相关的过滤器(如`casFilter`)添加到Shiro的过滤器链中。 ```xml <filter-name>shiroFilter org.springframework.web.filter....
本项目基于SpringBoot框架,结合Shiro、pac4j和CAS,构建了一个完整的JWT认证中心,旨在实现高效、安全的SSO解决方案。 1. **SpringBoot**: SpringBoot是Spring框架的一个扩展,它简化了Spring应用的初始搭建以及...
1. 配置Spring Boot:首先,我们需要在Spring Boot应用中引入必要的依赖,如CasClient、Shiro和Pac4J的相关依赖。然后,在配置文件中设置CAS服务器的URL和其他相关参数。 2. 集成CAS和Pac4J:在Spring Boot应用中,...
要集成CAS,我们需要在Shiro配置中添加CasFilter,并配置相关参数,如CAS服务器URL、服务验证URL等。 3. **Ticket验证**:当用户访问受保护资源时,Shiro会重定向到CAS服务器进行身份验证。如果用户已登录,CAS...