2017-01-30 5 views
0

J'ai utilisé l'application Spring SAML Sample et j'ai suivi les instructions. Ma configuration a fonctionné parfaitement comme prévu, quand SSOCircle IDP a été utilisé. Cependant, je voulais travailler avec ADFS. Donc, j'ai suivi les instructions sur la façon de configurer Spring SAML avec ADFS. Je l'ai compris quand, lorsque j'accède à Spring, l'application SAML est invoquée, elle affiche la page de sélection IDP avec l'URL adfs/services/trust. Quand je clique dessus, cela m'incite à l'authentification AD, ce à quoi je m'attendais. Mais, lorsque je fournis l'ID utilisateur/mot de passe pour l'authentification AD, il le traite et affiche un message qui lit "la page ne peut pas être affichée".Spring SAML et ADFS 2.0

Dans la barre d'adresse, l'URL de la page est affichée comme:

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

Test-DC.TEST.local est mon serveur sur lequel ADFS et AD sont hébergés.

Il n'y a aucune erreur dans le journal de Tomcat ou ailleurs.

Est-ce que quelqu'un qui a installé Spring SAML avec ADFS peut aider s'il vous plaît?

+0

Vous pouvez d'abord utiliser un traceur SAML pour obtenir l'assertion. En fonction de la liaison utilisée, il peut y avoir un problème avec la signature XML. Sans le message d'erreur des journaux, c'est difficile à dire, même pour quelqu'un qui l'a configuré avec succès avec ADFS. Les documents SAML Spring ont également une section issue de l'intégration ADFS. –

+0

merci. Je vais essayer d'utiliser SAML tracer. FYI: J'ai utilisé l'intégration ADFS de Spring Docs – kumaran

+0

Regardez dans le journal des événements ADFS et voir quelles sont les erreurs. – nzpcmad

Répondre

0

Assurez-vous que vous utilisez SHA2 et non SHA1.

soit remplacer la méthode 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); 
    } 
} 

et ajoutez ceci à votre SecurityContext:

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

ou mettre à jour le SecurityContext que vous utilisez lors de la configuration de vos métadonnées SP comme ci-dessous:

<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>