我使用 ssocircle 实现了 Spring SAML 示例应用程序,并且运行良好。现在我一直在尝试为客户的ADFS实现它。以下是我认为需要的配置,如有错误请指正:
- 将下面的第一个参数更改为客户端提供的 federationMetadata.xml 网址
<bean class="org.opensaml.saml2.metadata.provider.HTTPMetadataProvider">
<constructor-arg>
<value type="java.lang.String">http://idp.ssocircle.com/idp-meta.xml</value>
</constructor-arg>
<constructor-arg>
<value type="int">5000</value>
</constructor-arg>
<property name="parserPool" ref="parserPool"/>
</bean>
- 替换下面 SP 元数据的实体 ID:
<bean class="org.springframework.security.saml.metadata.MetadataGenerator">
<property name="entityId" value="replaceWithUniqueIdentifier"/>
<property name="extendedMetadata">
<bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
<property name="signMetadata" value="false"/>
<property name="idpDiscoveryEnabled" value="true"/>
</bean>
</property>
</bean>
我无法弄清楚以下内容:
- 我收到的只是 adfs/../federationMetadata.xml 的网址,谁应该创建 SP 元数据?
- 我是否应该创建 SP 元数据并提供给客户端,以将其添加到 adfs 中?因为,这就是我使用示例应用程序所做的。我将生成的元数据添加到 ssocircle
- 我的理解是,第 1 点是 adfs url,第 2 点是 SP 实体 ID,对吗?
如果您能向我澄清上述内容,我将不胜感激,如果可能的话,请向我指出简单的教程,该教程有助于将 SAML 与启用 Spring 安全性的应用程序集成,因为我还没有找到相同的教程。
非常感谢
最佳答案
要使 SP 和 IdP (ADFS) 之间的 SAML 正常工作,您必须相互交换元数据。
ADFS 元数据可通过 URL https://adfs-host/FederationMetadata/2007-06/FederationMetadata.xml 获取。您可以使用 HTTPMetadataProvider
在您的 SP 中注册它们,或者使用 ResourceBackedMetadataProvider
下载它们并从类路径或文件系统中读取它们。
对于SP元数据,您必须配置MetadataGenerator
(正如您在问题中所提到的那样),然后通过FilterChainProxy
公开它。下面是一个 Java 配置(与 XML 等效):
@Bean
public FilterChainProxy samlFilter() throws Exception {
List<SecurityFilterChain> chains = new ArrayList<SecurityFilterChain>();
chains.add(new DefaultSecurityFilterChain(
new AntPathRequestMatcher("/saml/metadata/**"), metadataDisplayFilter()));
return new FilterChainProxy(chains);
}
然后,您可以访问 URL https://sp-host/saml/metadata 上的 SP 元数据并将它们在 ADFS 上注册为依赖方信任。同样,您可以通过 URL 或从(下载的)文件导入数据来执行此操作。
基本上,如果您遵循Spring Security SAML,应该没问题 Reference Documentation它使用 XML 配置。如果您需要切换到 Java 配置,您可以找到方便的引用 vdenotaris/spring-boot-security-saml-sample ,或者我的工作原型(prototype) sw-samuraj/blog-spring-security .
关于spring - 使用 Spring SAML -SP 元数据与 IDP 元数据进行 ADFS 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43827628/