【问题标题】:CAS Server Single Sign Out using Java Servlet使用 Java Servlet 的 CAS 服务器单点注销
【发布时间】:2014-10-24 23:12:45
【问题描述】:

我正在尝试使用 Java Servlet 和 web.xml 中的过滤器映射来实现 CAS 单点注销。
web.xml中的Filter是这样的。

<filter>
   <filter-name>CAS Single Sign Out Filter</filter-name>
   <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
  </filter>

<listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>

<filter-mapping>
   <filter-name>CAS Single Sign Out Filter</filter-name>
   <url-pattern>/out</url-pattern>
</filter-mapping>

在'/out' url 模式上,调用由session.invalidate() 方法组成的java servlet,然后重定向cas/logout/。但我仍然无法正常注销。

这是我的日志:

DEBUG [http-bio-8080-exec-10] (HashMapBackedSessionMappingStorage.java:46) - Attempting to remove Session=[]
DEBUG [http-bio-8080-exec-10] (HashMapBackedSessionMappingStorage.java:55) - No mapping for session found.  Ignoring.

请帮忙。提前致谢。

【问题讨论】:

    标签: java servlets web.xml cas jasig


    【解决方案1】:

    您的日志表明在 CAS 应用程序中没有为您的特定会话找到映射。可能的原因可能是 CAS 应用程序服务器未用于登录,因此没有浏览器会话和令牌的映射。典型的流程是这样的。您尝试访问应用程序 A 的受保护资源并被重定向到 CAS 应用程序登录页面。您输入身份验证详细信息,CAS 验证您的详细信息并向您发出令牌,然后将其重定向到应用程序 A,应用程序 A 再次调用 CAS 服务器以验证令牌,成功后与应用程序 A 的会话被视为已通过身份验证。在进一步访问应用程序 A 时,不需要进一步的身份验证。在注销应用程序 A 时,请确保使 A 上的会话无效(您正在使用 servlet),然后重定向到 CAS 服务器的注销 url,以便它也可以注销 CAS 服务器上的会话。

    【讨论】:

    • 感谢先生回答我的问题。我完全按照您说的那样做。我正在使用 session.invalidate() ,然后通过使用 response.sendRedirect("CAS Server Logout URL"); 重定向到 cas url 的注销 url;它成功重定向到 cas 注销 url。但是,当我点击登录按钮时,它又可以登录了。
    • 我正在做类似于@iamrameshkr 的事情并得到相同的结果。也许我的期望是错误的?我认为如果我添加过滤器,它也会自动使 CAS 服务器上的会话无效(就像验证令牌时一样)。那么casServerUrlPrefix filter parameter 的目的是什么?
    • @watery,我相信 casServerUrlPrefix 过滤器参数并没有真正被过滤器使用,它在文档中是一个错误(恐怕是相对较多的“错别字”之一) .
    【解决方案2】:

    SingleSignOutFilter 独立于其他 CAS 过滤器(如票证验证过滤器)工作。因此,当 CAS 票证传递给您的应用程序时,您需要将其映射到两个 URL,以及当 CAS 发出单个注销请求时,映射到 URL。

    所以在最简单的情况下,您只需要更改这部分代码:

    <filter-mapping>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <url-pattern>/out</url-pattern>
    </filter-mapping>
    

    ...到这个:

    <filter-mapping>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    您也可以查看最新的documentation for configuring Single Sign Out了解更多详情。

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 2015-05-07
      • 2013-08-28
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多