【问题标题】:Integrating CAS into Java Dynamic Web Project将 CAS 集成到 Java 动态 Web 项目中
【发布时间】:2018-05-09 04:15:25
【问题描述】:

设置


部署在 Tomcat (ROOT) 中的“Hello World”servlet

(1) 这在没有 CAS 的情况下工作,我可以通过以下 URL 访问我的应用程序:

  • http://localhost:8090/hello
  • https://localhost:8443/hello

(2) 我在 Tomcat ROOT 的 web.xml 中插入了以下内容:

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>org.leo.Hello</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

<!-- Authentication filter -->
<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://localhost:8443/cas/login</param-value> 
    </init-param> 
    <init-param> 
        <param-name>serverName</param-name> 
        <param-value>https://localhost:8443</param-value>
    </init-param> 
</filter>

<!-- Ticket validation filter -->
<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://localhost:8443/cas</param-value> 
    </init-param> 
    <init-param> 
        <param-name>serverName</param-name> 
        <param-value>https://localhost:8443</param-value>
    </init-param>
</filter> 

<!-- HTTP servlet request wrapper filter -->
<filter>
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> 
    <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> 
</filter>

<!-- Assertion thread local filter -->
<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 Authentication Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<filter-mapping> 
    <filter-name>CAS Validation Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<filter-mapping> 
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping>
<filter-mapping>
    <filter-name>CAS Assertion Thread Local Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

(3) CAS服务器也部署在Tomcat中


问题


在所有这些编辑之后,我通过 HTTP 和 HTTPS 都得到了 404。我在这里做错了什么?

我需要我的应用程序重定向到 CAS 登录名,该登录名将在成功时重定向回我的应用程序。

【问题讨论】:

    标签: java tomcat cas


    【解决方案1】:

    如果我理解你的问题是正确的,你正在尝试 casify 你的 hello web 应用程序

    我相信,为了使您的应用程序安全,它需要在安全端口上运行。

    话虽如此,您将使用以下服务 URL,https://localhost:8443/hello

    您能否尝试将 web.xml 条目(与 CAS 相关)添加到您的 hello 应用程序的 web.xml 而不是 tomcat 的 ROOT web.xml 中?

    【讨论】:

      【解决方案2】:

      (1) 我更改了 Tomcat ROOT 的 web.xml,因为我的应用程序的类被复制到 ROOT 文件夹中并从那里部署。

      (2) 我在检查 Tomcat 和 CAS 服务器的日志时遇到了这个问题。缺少许多日志记录(和其他一些)库。我列出了所有这些,因为我不记得确切的添加:

      • 公共日志记录
      • slf4j-api
      • slf4j-ext/li>
      • slf4j-jcl
      • slf4j-jdk
      • slf4j-log4j
      • slf4j 迁移器
      • commons-nop
      • commons-简单

      (3) 我不声称对这个具体问题了解,但可以通过在以下文件中将 HTTP 添加到“serverId”属性来对 HTTP URL 进行 CAS 化:
      ~/[CAS服务器部署目录]/WEB-INF/classes/services/HTTPSandIMAPS-[SOME NUMBER].json

      【讨论】:

        猜你喜欢
        • 2012-04-05
        • 1970-01-01
        • 1970-01-01
        • 2017-07-23
        • 1970-01-01
        • 2016-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多