確保您使用的是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>
您可以首先使用SAML示蹤器來獲取斷言。基於所使用的綁定,可能存在XML簽名的問題。 如果沒有來自日誌的錯誤消息,即使對於使用ADFS成功設置的人也很難說。 Spring SAML文檔也有ADFS集成的一部分。 –
謝謝。我會嘗試使用SAML示蹤劑。僅供參考:我使用Spring Docs的ADFS集成 – kumaran
查看ADFS事件日誌並查看錯誤是什麼。 – nzpcmad