如何在我的新 SecurityContext.xml 中配置 samlIDPDiscovery bean?
Posted
技术标签:
【中文标题】如何在我的新 SecurityContext.xml 中配置 samlIDPDiscovery bean?【英文标题】:How to configure the samlIDPDiscovery bean in my new SecurityContext.xml? 【发布时间】: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 的登录页面来实现与上述类似的操作,我应该如何继续?很久以来我一直尝试这样做,但我做不到。非常感谢任何帮助。
【问题讨论】:
【参考方案1】:只要您基于 Spring SAML 示例应用程序配置您的应用程序,您就可以简单地将用户重定向到 scheme://host:port/context/saml/login?idp=entityId,其中 entityId 可以在您的 IDP 中找到元数据。这将自动启动 SSO 进程并跳过发现。
【讨论】:
是的,我已经跳过了 IDP 发现并开始了 SSO 流程。感谢您的回复!以上是关于如何在我的新 SecurityContext.xml 中配置 samlIDPDiscovery bean?的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的新 SecurityContext.xml 中配置 samlIDPDiscovery bean?
如何在我的新 Spring Boot 项目中关闭 Spring Security?
如何在我的新CSPROJ类库中包含带有本机dll的NuGet包?
如何将“.txt”文件中的数据库备份迁移到我的新 Rails 应用程序?