我使用了Spring SAML Sample应用程序并按照说明进行操作。当使用SSOCircle IDP时,我的配置完美按预期工作。但是,我想用ADFS来解决这个问题。因此,我按照有关如何使用ADFS配置Spring SAML的说明进行操作。我通过调用Spring SAML应用程序的位置得到了它,它显示了带有adfs / services / trust URL的IDP Selection页面。当我点击它时,它会提示我进行AD身份验证,这正是我所期望的。但是,当我提供AD身份验证的用户ID /密码时,它会处理它并显示一条消息,显示“无法显示页面”。
在地址栏上,页面的网址显示为:
Test-DC.TEST.local是托管ADFS和AD的服务器。
tomcat日志或任何地方都没有错误。
有人可以在这里安装带有ADFS的Spring SAML吗?
答案 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>