2017-05-07 584 views
0

我使用ssocircle实现了Spring SAML示例应用程序,它工作正常。现在我一直在尝试为客户的ADFS实现它。以下是配置我认为这是必需的,请纠正我,如果我错了:使用Spring SAML -SP元数据与IDP元数据进行ADFS集成?

  1. 更改下面的第一个参数,通过客户端
<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元数据的url?
    • 我是否应该创建SP元数据并提供给客户端,以便将它添加到adfs中?因为这就是我使用示例应用程序所做的。我添加了生成的元数据到ssocircle
    • 是我的理解,那点1会是adfs url,而点2会是SP实体id,对吗?

    我将不胜感激,如果你能澄清上面给我,也可能的话,点我的简单教程,帮助和Spring安全启用应用程序进行集成SAML,因为我一直没能找到相同的。

    非常感谢

    +0

    你的理解是正确的。您可以将SSOCircle元数据提供程序保留在配置中,并为ADFS联合身份验证服务添加另一个提供程序。然后,需要将SP元数据上载到ADFS服务器。有关详细信息,请参见[Spring Data SAML文档](http://docs.spring.io/spring-security-saml/docs/current/reference/htmlsingle/#d5e1748)。 – manish

    +0

    谢谢@manish。所以,只需验证我的理解,我就必须使用我的应用程序创建元数据,并且必须与客户端共享元数据,因为它需要上传到adfs服务器。对?所以这个元数据生成部分将始终在我的应用程序中?或者,我可以在创建并与客户端共享元数据后删除那个metadataGenerator Bean?我还会阅读你分享的链接。谢谢 –

    +0

    另外它不是强制性的离开ssoCircle提供者在配置权?如果我删除它,那么它应该工作? –

    回答

    0

    为了使SP和IDP(ADFS)工作SAML之间,你必须相互交流的元数据。

    ADFS元数据都可以在URL https://adfs-host/FederationMetadata/2007-06/FederationMetadata.xml,你可以在你的SP要么HTTPMetadataProvider他们注册或下载,并与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); 
    } 
    

    比,你可以访问SP元数据的URL https://sp-host/saml/metadataADFS作为信赖方信任注册。再次,您可以通过URL执行此操作,也可以从(下载的)文件中导入数据。

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

    相关问题