转载自:https://blog.csdn.net/y666666y/article/details/84835779
cas客户端服务
cas服务端提供服务,cas客户端:通过客户端程序集成的cas客户端和cas服务端交互,cas之所以要抽出一个服务端,是为了把
公用的session,cookie都放在服务端,一些验证指令通过cas客户端--》cas服务端--》各客户端的权限管理插件(如:shrio)
shrio:
1,把用户权限信息放在shrio的securitymanager管理器中
2,根据需要增加相应的认证,角色过滤器
3,认证的发起,
1调用shrio自有的接口地址,
2,用java代码编写:subject里面有登陆功能,有登陆后的session(在重写的认证接口设置),有用户名getPriciple();
cas和shrio区别分工
cas只做用户密码认证放行(集成在程序的客户端会调用cas服务进行验证)
shrio既可以做密码认证放行,也可以做权限判断
当二者结合的时候,可以分工密码认证cas来,权限判断shrio来
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="casRealm" />
<property name="subjectFactory" ref="casSubjectFactory" />
<!-- <property name="sessionManager" ref="sessionManager" /> -->
<!-- <property name="cacheManager" ref="shiroEhcacheManager" /> -->
</bean>
<bean id="casFilter" class="org.apache.shiro.cas.CasFilter">//cas拦截器----》密码认证
<property name="failureUrl"
value="http://localhost:8081/web/resources/failure.html" />
</bean>
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager" />//里面包含cas的本拦截服务设置----》shrio密码认证(集成cas时配置方式不同)
<!-- <property name="loginUrl"
value="http://localhost:8080/cas/login?service=http://localhost:8081/web/cas" /> -->
<property name="loginUrl"
value="http://localhost:8080/cas/login?a=2&service=http://localhost:8081/web/cas" >
</property>
<property name="successUrl"
value="http://localhost:8081/web/siteindex.do" />
<property name="filters">
<map>
<!-- <entry key="authc" value-ref="formAuthenticationFilter" /> -->
<entry key="cas" value-ref="casFilter" /> //shrio中集成本服务cas的拦截器
<entry key="logout" value-ref="logoutFilter" />
<entry key="osLogin" value-ref="osLogin" />
<entry key="oiLogin" value-ref="oiLogin" />
<entry key="csLogin" value-ref="csLogin" />
</map>
</property>
<!-- 重要:必须加上/cas = cas来告诉/cas用casFilter来处理 -->
<!-- 重要:logout为登出filter /myaccount/getFirmCenter =csLogin-->
<property name="filterChainDefinitions">---》权限过滤(动态的时候配置不同)
<value>
/information/news/getNewsInfoById==anon
/information/news/getInfoNewsData==anon
</value>
</property>
</bean>
<bean id="casRealm" class="org.apache.shiro.cas.CasRealm">//本服务用的cas拦截器
<property name="defaultRoles" value="ROLE_USER" />
<!-- 重要:这个是用来获取ticket的casServerURL的前缀,所以不能有login -->
<property name="casServerUrlPrefix" value="http://localhost:8080/cas/" />
<!--客户端的回调地址设置,必须和上面的shiro-cas过滤器拦截的地址一致 -->
<property name="casService" value="http://localhost:8081/web/cas" />
</bean>
<bean id="casSubjectFactory" class="org.apache.shiro.cas.CasSubjectFactory" />//把shrio的subject封装称cas的subject
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
————————————————
版权声明:本文为CSDN博主「yuhui66666688gfbfdy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/y666666y/article/details/84835779