【问题标题】:receiving 404 error with adding a controller to spring saml sample将控制器添加到 spring saml 示例时收到 404 错误
【发布时间】:2014-10-14 07:14:06
【问题描述】:

我的目标是在页面上有一个链接,将用户返回到原始站点。我从 spring saml 示例 http://projects.spring.io/spring-security-saml/ 开始,并向索引页面添加一个新功能。

我的 saml-servlet.xml 和 securityContext.xml 都有

<context:component-scan base-package="com.home.saml.sp"/>

我在 com.home.saml.sp 包中的 returnController.java

@Controller
public class ReturnController {

    @RequestMapping(value = "/redirect", method = RequestMethod.POST)
    public String redirect() {
        String redirectUrl = "http://www.home.com";
        return "redirect:"+ redirectUrl; 
    }
}

我的 index.jsp 添加了

<form method="POST" action="/redirect">
    <table>
        <tr>
            <td><input type="submit" value="Redirect * Page" /></td>
        </tr>
    </table>
</form>

【问题讨论】:

    标签: java spring jsp spring-mvc spring-saml


    【解决方案1】:

    saml servlet 处理 URL /saml/web/* 并因此跳过您的 /redirect 控制器。您需要将web.xml 中的 saml servlet 映射更改为:

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

    请注意,这会破坏示例应用程序中的元数据管理 UI。您需要将管理 UI 的当前安全性替换为:

    <!-- Security for the administration UI -->
    <security:http pattern="/metadata/**" access-denied-page="/metadata/login">
        <security:form-login login-processing-url="/metadata/login_check" login-page="/metadata/login" default-target-url="/metadata"/>
        <security:intercept-url pattern="/metadata/login" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
        <security:intercept-url pattern="/metadata/**" access="ROLE_ADMIN"/>
        <security:custom-filter before="FIRST" ref="metadataGeneratorFilter"/>
    </security:http>
    

    然后删除 JSP 中的所有 /saml/web 前缀,并将 adminLogin.jsp 更改为在 loginForm 中使用 /metadata/login_check。

    【讨论】:

      猜你喜欢
      • 2020-02-09
      • 2021-08-17
      • 2012-05-23
      • 2015-12-21
      • 1970-01-01
      • 2021-09-18
      • 2020-04-12
      • 2019-05-01
      • 1970-01-01
      相关资源
      最近更新 更多