Spring security 如何在我的新SecurityContext.xml中配置samlIDPDiscovery bean?

Spring security 如何在我的新SecurityContext.xml中配置samlIDPDiscovery bean?,spring-security,saml-2.0,spring-saml,Spring Security,Saml 2.0,Spring Saml,我最近开始阅读有关SAML的文章,并尝试在我现有的Java应用程序中实现类似于Spring的SAML示例项目的东西(因此,如果我问了一些愚蠢的问题,请原谅我!)。我现有的应用程序有一个Login.jsp,它要求用户提供凭据,并相应地进行登录验证。我想为我的应用程序实现SSO的思想。 因此,首先,我对Spring Saml示例项目非常了解。在其SecurityContext.xml中,samlIDPDiscovery bean配置为: <!-- IDP Discovery Service -

我最近开始阅读有关SAML的文章,并尝试在我现有的Java应用程序中实现类似于Spring的SAML示例项目的东西(因此,如果我问了一些愚蠢的问题,请原谅我!)。我现有的应用程序有一个Login.jsp,它要求用户提供凭据,并相应地进行登录验证。我想为我的应用程序实现SSO的思想。 因此,首先,我对Spring Saml示例项目非常了解。在其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>&nbsp;</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");
%>
IDP选择

选择IDP:


因此,如果我想通过对Login.jsp和securityContext.xml进行适当的更改来实现与上述类似的功能,以选择适当的IdP并在单击Login时重定向到所选IdP的登录页,我应该如何继续?这么长时间以来我一直试着这么做,但我做不到。非常感谢您的帮助。

只要您基于Spring SAML示例应用程序配置应用程序,您就可以简单地将用户重定向到scheme://host:port/context/saml/login?idp=entityId 在IDPs元数据中可以找到entityId。这将自动启动SSO进程并跳过查找。

是的,我已跳过IDP查找,SSO进程已启动。谢谢你的回复!