使用Spring SAML -SP元数据与IDP元数据进行ADFS集成?

时间:2017-05-07 03:49:50

标签: spring spring-security metadata adfs spring-saml

我使用ssocircle实现了Spring SAML示例应用程序,它工作正常。现在我一直在尝试为客户端的ADFS实现它。以下是我认为需要的配置,如果我错了,请纠正我:

  1. 将下面的第一个参数更改为客户端
  2. 提供的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>
    
    1. 替换以下SP元数据的实体ID:
    2. <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网址,第2点是SP实体ID,是吗?

      如果你能向我澄清上述内容,我也将不胜感激,如果可能的话,请指出直接的教程,有助于将SAML与Spring安全启用的应用程序集成,因为我无法找到相同的内容。

      非常感谢

1 个答案:

答案 0 :(得分:0)

要在 SP IdP (ADFS)之间进行 SAML ,您必须相互交换元数据。

ADFS 元数据位于网址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);
}

然后,您可以访问网址https://sp-host/saml/metadata上的 SP 元数据,并将其作为依赖方信任注册在 ADFS 上。同样,您可以通过URL或从(下载的)文件导入数据来执行此操作。

基本上,如果你遵循使用XML配置的 Spring Security SAML Reference Documentation,你应该没问题。如果您需要切换到Java配置,您可以找到方便的vdenotaris/spring-boot-security-saml-sample或我的工作原型sw-samuraj/blog-spring-security