【发布时间】:2014-04-14 22:26:46
【问题描述】:
我最近开始阅读有关 SAML 的内容,并尝试在我现有的 Java 应用程序中实现类似于 Spring 的 SAML 示例项目的东西(所以如果我问了一些愚蠢的问题,请原谅我!)。我现有的应用程序有一个 Login.jsp,它要求用户提供凭据并相应地进行验证以登录。我想为我的应用程序实现 SSO 的想法。 因此,首先,我非常了解 Spring Saml-sample 项目。在其 SecurityContext.xml 中,samlIDPDiscovery bean 配置为:
<!-- IDP Discovery Service -->
<bean id="samlIDPDiscovery" class="org.springframework.security.saml.SAMLDiscovery">
<property name="idpSelectionPath" value="/WEB-INF/security/idpSelection.jsp"/>
</bean>
idpSelection.jsp 的 html 部分代码如下:
<h1>IDP selection</h1>
<%
WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletConfig().getServletContext());
MetadataManager mm = context.getBean("metadata", MetadataManager.class);
Set<String> idps = mm.getIDPEntityNames();
pageContext.setAttribute("idp", idps);
%>
<p>
<form action="<c:url value="${requestScope.idpDiscoReturnURL}"/>" method="GET">
<table>
<tr>
<td><b>Select IDP: </b></td>
<td>
<c:forEach var="idpItem" items="${idp}">
<input type="radio" name="${requestScope.idpDiscoReturnParam}" id="idp_<c:out value="${idpItem}"/>" value="<c:out value="${idpItem}"/>"/>
<label for="idp_<c:out value="${idpItem}"/>"><c:out value="${idpItem}"/></label>
<br/>
</c:forEach>
</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Login"/></td>
</tr>
</table>
</form>
</p>
<p>
<a href="<c:url value="/saml/web/metadata"/>">Metadata information</a>
</p>
<%
response.sendRedirect("http://localhost:6443/spring-saml/saml/login/alias/defaultAlias? idp=http%3A%2F%2Fidp.ssocircle.com");
%>
因此,如果我想通过对我的 Login.jsp 和 securityContext.xml 进行适当更改以选择适当的 IdP 并在单击登录时重定向到所选 Idp 的登录页面来实现与上述类似的操作,我应该如何继续?很久以来我一直尝试这样做,但我做不到。非常感谢任何帮助。
【问题讨论】:
标签: spring-security saml-2.0 spring-saml