将 CAS 集成到 Java 个动态 Web 项目中
Integrating CAS into Java Dynamic Web Project
设置
一个 "Hello World" servlet 部署在 Tomcat (ROOT)
(1) 这在没有 CAS 的情况下工作,我可以通过以下 URL 访问我的应用程序:
- http://localhost:8090/你好
- https://localhost:8443/你好
(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
设置
一个 "Hello World" servlet 部署在 Tomcat (ROOT)
(1) 这在没有 CAS 的情况下工作,我可以通过以下 URL 访问我的应用程序:
- http://localhost:8090/你好
- https://localhost:8443/你好
(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