关于cas单点登录的问题

白小衣 发布于 2014/08/23 14:14
阅读 1K+
收藏 2

客户端项目配置cas后,访问所有内容都必须在登录的前提下,如果想不登陆也能访问,只在用户点击登陆或者访问某些特殊内容才跳转到登录该怎么做

cas-server-3.5.2.1  和 cas-client-3.2.1

客户端web.xml配置如下

<!--单点登出-->
<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 -->
<listener>   
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>   
</listener>   
<!-- 该过滤器用于实现单点登出功能,可选配置。 -->       
<filter>   
<filter-name>CAS Single Sign Out Filter</filter-name>   
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>   
</filter>
<filter-mapping>   
<filter-name>CAS Single Sign Out Filter</filter-name>   
<url-pattern>/*</url-pattern>   
</filter-mapping>




<!-- 该过滤器负责用户的认证工作,必须启用它 -->
<filter>   
    <filter-name>CAS Authentication Filter</filter-name>   
    <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>   
    <init-param>   
        <param-name>casServerLoginUrl</param-name>   
        <param-value>https://casserver:8553/cas/login</param-value>   
    </init-param>   
    <init-param>  
    <!--这里的server是服务端的IP--> 
        <param-name>serverName</param-name>   
        <param-value>http://casserver:9090/</param-value>   
    </init-param>   
</filter>   
<filter-mapping>   
    <filter-name>CAS Authentication Filter</filter-name>   
    <url-pattern>/*</url-pattern>   
</filter-mapping>


<!--
ValidationFilter 
这个filter负责对请求参数ticket进行验证(ticket参数是负责子系统与CAS进行验证交互的凭证)
casServerUrlPrefix:CAS服务访问地址
serverName:当前应用所在的主机名
该过滤器负责对Ticket的校验工作,必须启用它
-->
<filter>   
   <filter-name>CAS Validation Filter</filter-name>   
   <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>   
   <init-param>   
       <param-name>casServerUrlPrefix</param-name>   
       <param-value>https://casserver:8553/cas</param-value>   
   </init-param>   
   <init-param>   
       <param-name>serverName</param-name>   
       <param-value>http://casserver:9090/</param-value>   
   </init-param>   
</filter>   
<filter-mapping>   
    <filter-name>CAS Validation Filter</filter-name>   
    <url-pattern>/*</url-pattern>   
</filter-mapping>


<!--
HttpServletRequestWrapperFilter 
HttpServletRequet的包裹类,让他支持getUserPrincipal,getRemoteUser方法来取得用户信息;
比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。
-->
<filter>   
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>   
    <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>   
</filter>   
<filter-mapping>   
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>   
    <url-pattern>/*</url-pattern>   
</filter-mapping>  
<!--
AssertionThreadLocalFilter 
这个类把Assertion信息放在ThreadLocal变量中,这样应用程序不在web层也能够获取到当前登录信息
Assertion assersion =AssertionHolder.getAssertion();
该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 
比如AssertionHolder.getAssertion().getPrincipal().getName()。
-->
<filter>   
    <filter-name>CAS Assertion Thread Local Filter</filter-name>   
    <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>   
</filter>   
<filter-mapping>   
    <filter-name>CAS Assertion Thread Local Filter</filter-name>   
    <url-pattern>/*</url-pattern>   
</filter-mapping>



加载中
0
Catelyn
Catelyn

改变认证filter的拦截url

Catelyn
Catelyn
@白小衣 我最近发过一段那个代码,你看看
Catelyn
Catelyn
@白小衣 其实就是根据spring webflow新开一个流程,放一个接口出来就行!调用它的验证api就可以乐
白小衣
白小衣
@惉惉自喜 额 改源码,有这方面资料吗?
Catelyn
Catelyn
@白小衣 改cas源码放个接口自定义登录
白小衣
白小衣
只拦截部分需要拦截的url是吧?如果想点击登录按钮就在当前页面弹出一个到cas server的登录框怎么做呢
返回顶部
顶部