cas 客户端配置分析
cas 客户端配置分析
冰封勿扰 发表于1年前
cas 客户端配置分析
  • 发表于 1年前
  • 阅读 13
  • 收藏 0
  • 点赞 0
  • 评论 0

华为云·免费上云实践>>>   

摘要: cas 客户端相关配置分析

cas 客户端配置主要集中在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>
            <!--到服务器地址,注意后面的/login-->
            <param-name>casServerLoginUrl</param-name>
            <param-value>http://127.0.0.1:8080/cas/login</param-value>
        </init-param>
        <init-param>
            <!--本程序所在的URL-->
            <param-name>serverName</param-name>
            <param-value>127.0.0.1:8081</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:当前应用所在的主机名 -->
    <filter>
        <filter-name>CASValidationFilter</filter-name>
        <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
        <init-param>
            <param-name>casServerUrlPrefix</param-name>
            <param-value>http://127.0.0.1:8080/cas</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://127.0.0.1:8081</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CASValidationFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 该过滤器负责实现HttpServletRequest请求的包裹,比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名-->
    <filter>
        <filter-name>CASHttpServletRequest WrapperFilter</filter-name>
        <filter-class>
            org.jasig.cas.client.util.HttpServletRequestWrapperFilter
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CASHttpServletRequest WrapperFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
     <!--该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。比如AssertionHolder.getAssertion().getPrincipal().getName()。-->
    <filter>
        <filter-name>CASAssertion Thread LocalFilter</filter-name>
        <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CASAssertion Thread LocalFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- ======================== 单点登录结束 ======================== -->

使用到相关类结构的分析类的分析:

每个类源码的分析:

1.SingleSignOutHttpSessionListener:

      继承于HttpSessionListener,通过监听session的销毁事件,来判断是否需要销毁sessionMappingStorage中的session对象。

2.SingleSignOutFilter:

      通过SingleSignOutHandler对象来并处理解析捕获到的请求,如果是有带有票据的请求则session添加到sessionMappingStorage,如果为登出请求则删除sessionMappingStorage中的session

sessionMappingStorage

3.AuthenticationFilter:

       如果session中何以获取到Assertion对象,或者请求中拥有票据的话则执行下一个过滤器,否则的话跳转到登陆界面。

4.Cas20ProxyReceivingTicketValidationFilter:

      继承于Cas20ProxyReceivingTicketValidationFilter,主要逻辑在AbstractTicketValidationFilter中实现。如果请求中存在ticket参数则检验ticket并获取Assertion对象并将其放入request或session中。

     

其他几个类比较简单就不再解释了。

共有 人打赏支持
粉丝 0
博文 2
码字总数 892
×
冰封勿扰
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: