shrio cas集成之请求流程及拦截特性:
整理一下整个登录流程(一次登录包含三次请求):
http://localhost:8080/cas/login?a=0&service=http://localhost:8081/web/cas(a=0,cas登录界面的参数,&转义符)
第一次请求应用服务器:用地址配置的cas前部分http://localhost:8080/cas/login
当用户第一次访问应用服务器的URL,由于session中没有"_const_cas_assertion_"且参数中没有ticket(或cookie没有值,cookie有值可以生成session),会被AuthenticationFilter跳转到CAS服务器的登录页面。
第二次请求应用服务器:调用service部分验证TGT,service=http://localhost:8081/web/cas
在CAS服务器的登录页面成功登录以后,会跳转到应用服务器登录前的页面,但是加上了一个参数ticket。此次请求由于有ticket参数,通过了AuthenticationFilter,但是TicketValidationFilter会对ticket进行校验,校验成功后,会在session中加入"_const_cas_assertion_",再去掉ticket参数进行一次跳转。
第三次请求应用服务器:验证通过后去了ticket再正常跳转
此时由于session中已经有了"_const_cas_assertion_",会通过AuthenticationFilter,由于没有ticket参数,也通过了TicketValidationFilter,也就是可以正常显示出这个页面了。以后再请求应用服务器就和这次一样了,由于session包含"_const_cas_assertion_"即可正常访问。
即这三次请求的地址都在登录地址中前部分登录页面,后部分验证TGT,最后一次去了ticket再正常跳转
单纯的cas:
用web.xml中的过滤器实现,他的casServerLoginUrl相当于shrio与之集成(A集成)的前部分cas登录页面请求,
TGT验证是在另一个过滤其中做了不再像A集成一样用要靠后半部分地址手动调用TGT验证,
登录成功回调地址是登陆前请求被过滤拦截要先登录的地址等同A集成显示写的successUrl,当然A集成也有优先
跳到请求时被拦截先登的地址(cas登录成功回调请求页面的特性优先successUrl(直接请求登陆就是用successUrl))
<filter>
<filter-name>CAS Authentication Filter</filter-name>
<filter-class>com.ylsoft.utils.MyCasFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>/login</param-value>
</init-param>
</filter>
<filter>
<filter-name>CAS Authentication Filter1</filter-name>
<filter-class>com.ylsoft.utils.MyCasFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>/login?a=1</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<url-pattern>/os/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS Authentication Filter1</filter-name>
<url-pattern>/ou/*</url-pattern>
</filter-mapping>
cas写完cookie sesion之后,shrio自己再按常规验证
拦截特性:
只有认证成功之后才会有session信息的写入,没有拦截的地址没有记录session的功能,类似登录拦截这种过滤器的拦截也不会有session的记录
分布式的时候请求哪个服务的地址,就用哪个服务的拦截(拦截url就配置在哪里),不管是否从哪个服务发出的请求,
写拦截地址的特点是不写项目名直接写出去项目名之后的/myaccount/getFirmCenter =csLogin,
这个只看组装之后发出的url不管组装前,比如本系统${content}+"web/myaccount/getFirmCenter",还是其他系统
${content}+"/../web/myaccount/getFirmCenter "(/../为了去了其他系统名)最终的请求地址都是http://localhost:8081/web/myaccount/getFirmCenter
所以:拦截地址就在web项目配/myaccount/getFirmCenter =csLogin,
定点拦截方案等自定义拦截,自定义的拦截优先于在拦截工厂写入的拦截(相同功能的拦截),即同类功能的拦截器虽然地址规则都符合,
如果一个url有多个拦截器(自定义的和默认的)这些中只要有相同功能的比如拦截登录,自定义的优先默认的,只执行一个即可
比如多个自定义登录过滤的配置(默认有一个),在url符合过滤规则的时候,优先用自定义的
对于不需要拦截的,只拎出放行的即可(anoe)
相关推荐
在SSO环境中,Shiro作为SpringBoot应用的客户端,负责拦截请求,检查用户是否已经通过CAS进行了身份验证,并根据CAS返回的票证进行后续处理。 4. **Pac4j** Pac4j是一个安全库,支持多种认证协议,包括CAS。在本...
1. 应用系统采用shiro做权限控制,并且跟cas集成 2. 在/spring-node-1/src/main/resources/conf/shiro.properties 文件中 ``` properties shiro.loginUrl=...
- `CasShiroFilter`: 自定义的过滤器,结合了CAS和Shiro的功能,对请求进行拦截和处理。 - `CustomCasRealm`: 自定义的 Realm 类,实现Shiro的认证和授权逻辑,可能包含与CAS服务端通信的代码。 - `UserDetails`:...
4. **配置SSO过滤器**:在Spring的web.xml中,配置Shiro的过滤器链,确保CasFilter在适当的位置,以拦截HTTP请求并处理SSO逻辑。Shiro的RememberMeFilter也可能需要配置,以实现记住用户的功能。 5. **处理回调和...
使用Filter链来拦截请求,进行安全控制;还可以自定义缓存管理器,决定如何存储和检索缓存数据。 在实际应用中,Shiro可以用来保护REST API、控制Web界面的访问权限、管理用户的会话状态等。通过理解和熟练运用这些...
8. **shiro-spring-1.7.1.jar**: Shiro与Spring框架的整合模块,它允许你在Spring环境中使用Shiro的安全特性。这个模块提供了Spring Bean的定义和配置,使得Shiro的组件可以被Spring管理。 9. **shiro-all-1.7.1....
2. **Shiro Web**:这个模块专门用于Web应用的安全管理,提供了过滤器来拦截请求,实现登录、权限控制等功能。例如,`Realm`接口是Shiro的核心,用于连接到实际的用户数据源,如数据库或LDAP目录,进行用户身份验证...
例如,通过定义角色和权限,Shiro可以拦截未经许可的请求,防止非法访问。同时,Shiro还支持RememberMe功能,允许用户在一段时间内无需重新登录。在`springboot-casclient`项目中,Shiro的这些功能得到了充分利用,...
总结起来,这个"单点登录cas服务器demo及springboot客户端demo"项目提供了一个实践单点登录概念的实例,涵盖了CAS服务器的搭建、Spring Boot应用的CAS客户端集成,以及Shiro或Pac4j的使用。对于想要学习和理解SSO...
2. **定制过滤器**:编写自定义过滤器,拦截所有请求,根据情况重定向到CAS服务器或处理服务票证。 3. **认证和授权**:Shiro通过Cas客户端获取的用户信息进行认证和授权操作。 4. **会话管理**:利用Shiro的会话...
3. 安全拦截:通过Shiro的过滤器链,可以拦截未授权的请求,防止非法访问。 4. Spring Boot集成:Shiro可以无缝集成到Spring Boot应用中,简化了配置和使用。 **Pac4j组件** Pac4j是一个安全库,适用于多种Web框架...
在 Web 应用的 `web.xml` 中配置 Shiro 的 Filter,并设置 Filter 的拦截规则,确保所有受保护的资源都通过 CAS Filter。 ```xml <filter-name>shiroFilter <filter-class>org.apache.shiro.web.servlet.Shiro...
在这个项目中,我们创建了一个专门处理SSO的拦截器,它会在每个请求被处理前检查用户是否已经登录,如果没有,则引导用户跳转至CAS服务器进行登录。 具体实现步骤如下: 1. 配置拦截器:在`web.xml`文件中,我们...
综上,"login demo"项目利用了Shiro和JavaEE的优势,为开发者提供了一个完整的用户登录流程示例,涵盖了身份验证、授权、会话管理等多个关键安全环节。通过学习这个示例,开发者可以更好地理解和应用这些技术来构建...
Kisso提供了一个统一的登录验证拦截器,可以通过Spring的mvc拦截器配置,对所有请求进行拦截,确保只有经过认证的请求才能访问特定资源。这个拦截器可以在整个应用的所有请求上应用,也可以针对某个模块下的特定请求...
通常使用开源的CAS服务器,如 Jasig CAS,它可以与各种应用系统集成。 2. **配置服务提供者(Service Provider)**:每个需要SSO功能的应用系统都是一个服务提供者。它们需要配置与CAS服务器的通信方式,比如通过...
2. **客户端(Service Provider)**:每个应用系统被视为一个客户端,它们需要集成XXL-SSO的SDK或者配置相应的拦截器,以便在用户访问时检查Ticket并转发到中心认证服务器进行验证。 3. **通信协议**:XXL-SSO通常...
3. **过滤器(Filter)**:实现CAS或OAuth2的拦截逻辑,处理票据验证和重定向。 4. **服务(Service)**:处理业务逻辑,如用户认证、授权等。 5. **模型(Model)**:定义用户、权限等相关数据结构。 6. **数据库...
在Java中实现SSO,通常会用到各种技术和框架,如Spring Security、CAS(Central Authentication Service)、Shiro等。这个实例可能是基于这些技术之一构建的,旨在帮助开发者理解和实践SSO的实施过程。 首先,`....