CAS+Spring security实现单点登录之配置篇
来源:互联网 发布:socket文件传输java 编辑:程序博客网 时间:2024/06/06 12:23
分清Spring security和CAS的职责
CAS职责
- 单点认证(自己YY的名词,懂就行):在CAS Server认证后,各Client都认
- 对不起,没其他的了,其他都是Spring security干的事情!
Spring security职责
- 认证各个请求,认证不过,就去做身份认证
此处占两个灰常灰常重要的坑:- 坑1:怎么认证请求,判断请求的人有没有验证过,有没有通行证(角色涉及的权限暂不表)
- 坑2:怎么认证身份,来者是谁,验明正身后给发通行证。
- 保存、销毁用户信息,并提供查询方式;
配置:
配置Spring security
配置特定的servlet filter,配置位置:web.xml
<filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
配置CAS的认证机制
对应上述坑1。配置地址:spring security的配置文件,例如spring-security.xml什么的
何时开始认证?指定CAS的认证时机
<security:http auto-config="false" entry-point-ref="casEntryPoint"> <security:custom-filter ref="requestSingleLogoutFilter" before="LOGOUT_FILTER"/> <security:custom-filter ref="singleLogoutFilter" before="CAS_FILTER"/> <security:custom-filter ref="casFilter" position="CAS_FILTER"/> </security:http>
说明:spring security采用filterchain来处理request,它定义了一套处理点,详见官方文档:spring security reference。另,偷偷加入了logout的处理,道理是类似的。
用什么认证?定义CAS的Filter
<bean id="casFilter" class="org.springframework.security.cas.web.CasAuthenticationFilter"> <property name="authenticationManager" ref="authenticationManager"/></bean><security:authentication-manager alias="authenticationManager"> <security:authentication-provider ref="casAuthenticationProvider"/></security:authentication-manager>
如何认证?定义认证的Provider
按照spring security的玩法,实际做认证逻辑的是authenticationProvider,即此处的casAuthenticationProvider:
<bean id="casAuthenticationProvider" class="org.springframework.security.cas.authentication.CasAuthenticationProvider"> <property name="authenticationUserDetailsService"> <bean class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper"> <constructor-arg ref="MyUserDetailsImpl"/> </bean> </property> <property name="serviceProperties" ref="serviceProperties"/> <property name="ticketValidator"> <bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator"> <constructor-arg index="0" value="${cas.server.validator}"/> </bean> </property> <property name="key" value="casAuthProviderKey"/></bean>
参数说明
保存认证信息的类,没错,必须实现某个spring security定义好的接口,它就是UserDetailsService
票据认证,也就是产生了票据,我怎么认证票据是否是正确的呢,此处插入了CAS的认证类。
服务属性,存点信息,和我们处理相关的信息
CAS认证所需配置信息
ServiceProperties处放CAS的各种杂七杂八的配置。
<bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties"> <property name="service" value="${web.server.login}"/> <property name="sendRenew" value="false"/></bean>
参数说明
- service 这玩意就是CAS Service认证完用户名、密码后回来访问CAS Client的地址;
- sendRenew 网上看到某美女程序员说是要不要每次请求都认证一把,当时我就信了。
小结
到此已经填完了坑1,开始填坑2,即跑去验明正身。
配置用户名&密码认证点
spring security说去AuthenticationEntryPoint处验证。CAS提供实现了该接口的类。
在配置CAS认证时机的时候,其实已经配置了,回顾下
<security:http auto-config="false" entry-point-ref="casEntryPoint">
<bean id="casEntryPoint" class="org.springframework.security.cas.web.CasAuthenticationEntryPoint"> <property name="loginUrl" value="${cas.server.login}"/> <property name="serviceProperties" ref="serviceProperties"/></bean>
参数说明
- loginUrl 指定CAS Server上登录认证地址,ip:port/cas/login
- serviceProperties 同上
总结
至此,两个坑填完,配置也就基本配完了。还剩余spring security的角色什么的,放在spring securtiy的总结篇再折腾。
总结final
认证总体框架是spring security的,我们只需要给spring security的几个坑填上CAS的机制而已。
总结final2
C转JAVA,刚开始慢慢看看Spring各大框架,框架重不重咱以后总结,设计思想是值得学习的。
- CAS+Spring security实现单点登录之配置篇
- Spring Security集成CAS实现单点登录
- Spring Security 4.0 CAS实现单点登录
- spring security +cas单点登录
- 第四部分:spring security使用cas单点登录配置
- Spring Security调研记录【五】--基于Cas实现单点登录
- cas单点登录整合spring security
- Security 4.0 CAS实现单点登录
- spring security 集成cas单点登录核心配置及相关java代码
- spring boot配置Cas单点登录
- spring + shiro + cas 实现sso单点登录
- spring + shiro + cas 实现sso单点登录
- spring + shiro + cas 实现sso单点登录
- cas shiro spring实现单点登录
- spring + shiro + cas 实现sso单点登录
- CAS单点登录配置
- CAS单点登录配置
- CAS单点登录配置
- uva 221
- 魂归何处?畅谈人类制造
- 打开Voice Over时,CATextLayer的string对象兼容NSString和NSAttributedString导致的Crash
- cocos2d-x 中添加显示文字的三种方式 LabelTTF 、LabelBMFont 和 LabelAtlas
- 易忘知识整理
- CAS+Spring security实现单点登录之配置篇
- LEETCODE-Roman to Integer
- 随机点名程序.cs
- 各种排序算法的分析及java实现
- J2SE小结
- ae+C#实现图层管理控件上的图层移动功能
- 打开Voice Over时,CATextLayer的string对象兼容NSString和NSAttributedString导致的Crash(一现象)
- c标签汇总
- 从网络解析数据并实现三个界面的跳转