将 CAS 集成到 Java 个动态 Web 项目中

Integrating CAS into Java Dynamic Web Project

设置


一个 "Hello World" servlet 部署在 Tomcat (ROOT)

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

(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 登录,成功后它将重定向回我的应用程序。

如果我对你的问题的理解正确,那么你正在尝试对你的 hello web 应用程序进行 casify

我相信,要对您的应用程序进行 casify,它需要 运行 在安全端口上。

话虽如此,您将对以下服务进行分类 URL、https://localhost:8443/hello

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

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

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

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

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