cas与shrio整体认识及cas和shrio区别分工

 

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&amp;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" />

 

猜你喜欢

转载自yuhuiblog6338999322098842.iteye.com/blog/2353420