当前位置: 首页 > 知识库问答 >
问题:

Tomcat上的Spring Security SAML元数据URL

卜勇
2023-03-14

我正在开发一个基于Java的web应用程序,在Tomcat服务器上使用Spring Security SAML实现SSO。此应用程序将扮演服务提供者的角色(SP)。检索此SP元数据的默认Spring URL是:

https://www.server.com:8080/context/saml/metadata

这样做很好,按预期返回元数据XML文件。但是,当我向web.xml添加DefaultServlet servlet-mappings时,我遇到了一个问题。甚至只是一些基本的东西:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>
</servlet-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>Spring Security SAML</display-name>
<description>Sample application demonstrating Spring security SAML integration.</description>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/securityContext.xml
    </param-value>
</context-param>

<servlet>
    <servlet-name>saml</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>saml</servlet-name>
    <url-pattern>/saml/web/*</url-pattern>
</servlet-mapping>

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- This servlet mapping prevents the /saml/metadata URL from working. -->
 <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>
</servlet-mapping>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/error.jsp</location>
</error-page>


</web-app>

共有1个答案

范修伟
2023-03-14

我尝试用Spring SAML 1.0.0..发布,通过以下步骤重现您的问题:

  • 下载的Spring SAML源代码
  • 用您的web.xml
  • 替换了 sample/src/main/webapp/WEB-INF/web.xml
  • 使用Gradlew build Tomcatrun
  • 启动示例应用程序

但我无法再现你的问题,一切都在继续正常运转。这个问题可能是特定于某个Tomcat版本的,请尝试用我的步骤重现它,并最终尝试更改您的Tomcat版本。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Spring Security SAML</display-name>
    <description>Sample application demonstrating Spring security SAML integration.</description>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/securityContext.xml
        </param-value>
    </context-param>

    <servlet>
        <servlet-name>saml</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>saml</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>/WEB-INF/*</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/images/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/css/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.gif</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/error.jsp</location>
    </error-page>


</web-app>

确保更改文件org.springframework.security.saml.web.metadataController并将@requestmapping(“/saml/web/metadata”)替换为@requestmapping(“/saml/metadata”)

 类似资料:
  • 本文向大家介绍使用genymotion访问本地上Tomcat上数据的方法,包括了使用genymotion访问本地上Tomcat上数据的方法的使用技巧和注意事项,需要的朋友参考一下 1、首先 当然是启动genymotion 2、然后Tomcat ,启动tomcat。。如图 将请求的URL地址变为10.0.3.2 ,比如在电脑上访问的是http://localhost:8080/ 那么在genymot

  • 表元数据 下面这些方法用于获取表信息: 列出数据库的所有表 $this->db->list_tables(); 该方法返回一个包含你当前连接的数据库的所有表名称的数组。例如: $tables = $this->db->list_tables(); foreach ($tables as $table) { echo $table; } 检测表是否存在 $this->db->table_

  • 使用元数据 (metadata) 来给你的代码提供额外的信息。一个元数据注解以字符 @ 开头,后面跟着的要么是编译期常量(比如 deprecated),要么是常量构造函数的调用。 有两个注解可应用于所有的 Dart 代码:@deprecated 和 @override。使用 @override 的例子,请参阅 继承类。下面是一个使用 @deprecated 注解的例子: class Televis

  • 本部分验证元数据缓存功能。 测试数据库初始化 本部分使用 mariadb。创建数据库,用户 $ mysql -u root -p CREATE DATABASE accounts; USE accounts; CREATE USER jdv_user@'%' IDENTIFIED BY 'jdv_pass'; GRANT ALL PRIVILEGES ON accounts.* to jdv_

  • Solidity编译器自动生成JSON文件,即合约的元数据,其中包含了当前合约的相关信息。 它可以用于查询编译器版本,所使用的源代码,应用二进制接口(Application Binary Interface(ABI)) 和 以太坊标准说明格式(Ethereum Nature Specification Format(natspec)) 文档,以便更安全地与合约进行交互并验证其源代码。 编译器会将元

  • 我在执行配置单元查询时遇到异常。我关注以下链接:http://www.thecloudavenue.com/2013/03/analysis-tweets-using-flume-hadoop-and.html 终端数据在这里: