我的目标是在页面上有一个链接,将用户返回到原始站点。我从spring saml示例http://projects.spring.io/spring-security-saml/开始,并在索引页面添加一个新函数。
我的saml-servlet.xml和securityContext.xml都有
<context:component-scan base-package="com.home.saml.sp"/>
我的returnController.java包com.home.saml.sp
@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>
答案 0 :(得分:0)
saml servlet处理URL /saml/web/*
,因此会跳过/redirect
控制器。您需要将web.xml
中的saml servlet映射更改为:
<servlet-mapping>
<servlet-name>saml</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
请注意,这将破坏示例应用程序中的元数据管理UI。您需要使用以下命令替换admin 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
中更改/metadata/login_check
以使用loginForm
。