Spring SAML和ADFS 2.0

时间:2017-01-30 19:00:23

标签: spring saml adfs2.0 adfs3.0

我使用了Spring SAML Sample应用程序并按照说明进行操作。当使用SSOCircle IDP时,我的配置完美按预期工作。但是,我想用ADFS来解决这个问题。因此,我按照有关如何使用ADFS配置Spring SAML的说明进行操作。我通过调用Spring SAML应用程序的位置得到了它,它显示了带有adfs / services / trust URL的IDP Selection页面。当我点击它时,它会提示我进行AD身份验证,这正是我所期望的。但是,当我提供AD身份验证的用户ID /密码时,它会处理它并显示一条消息,显示“无法显示页面”。

在地址栏上,页面的网址显示为:

https://localhost:8443/spring-security-saml2-sample/saml/login?idp=http%3A%2F%2FTest-DC.TEST.local%2Fadfs%2Fservices%2Ftrust

Test-DC.TEST.local是托管ADFS和AD的服务器。

tomcat日志或任何地方都没有错误。

有人可以在这里安装带有ADFS的Spring SAML吗?

1 个答案:

答案 0 :(得分:0)

确保您使用的是SHA2而不是SHA1。

覆盖afterPropertiesSet方法:

    public class SSOConfigBean 
  implements InitializingBean 
{

  private String signatureAlgorithmSHA = SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256;
  private String digestAlgorithmSHA = SignatureConstants.ALGO_ID_DIGEST_SHA256;

  @Override
  public void afterPropertiesSet() throws Exception 
  {
    BasicSecurityConfiguration config = (BasicSecurityConfiguration) Configuration.getGlobalSecurityConfiguration();
    config.registerSignatureAlgorithmURI("RSA", signatureAlgorithmSHA);
    config.setSignatureReferenceDigestMethod(digestAlgorithmSHA);
  }
}

并将其添加到您的securityContext:

  <!-- setting encryption to SHA2 instead of default SHA1 -->
  <bean class="path.to.SSOConfigBean"/>

或者在设置SP元数据时更新您正在使用的securityContext,如下所示:

  <bean id="metadataGeneratorFilter" class="org.springframework.security.saml.metadata.MetadataGeneratorFilter">
    <constructor-arg>
      <bean class="org.springframework.security.saml.metadata.MetadataGenerator">
        <property name="entityId" value="urn:samltest"/>
        <property name="extendedMetadata">
          <bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
            <property name="idpDiscoveryEnabled" value="false"/>
            <property name="local" value="true"/>
            <property name="signingAlgorithm" value="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
          </bean>
        </property>
      </bean>
    </constructor-arg>
  </bean>