2015-09-29 3 views
0

J'ai utilisé le plugin spring-security-saml2 pour établir un lien entre l'application web tomcat et le serveur ADFS. J'essaie d'obtenir la même chose dans une application Web déployée dans IBM Websphere Application Server 7.SSO entre l'application Web dans IBM WAS 7 et ADFS2.0

J'ai créé un fichier de clés personnalisé dans IBM WAS et utilisé celui-ci pour activer SSL sur WAS. Le certificat personnel de keystore est utilisé dans l'application securityContext.xml pour signer les métadonnées et le certificat de signataire importés dans le serveur ADFS. Le certificat de serveur ADFS est importé en tant que certificat de signataire dans le magasin de clés WAS. Je suis en mesure d'envoyer une demande d'authentification au serveur ADFS et également en mesure d'afficher la réponse dans les journaux. Mais obtenir l'erreur suivante dans le décodage sur l'écran.

Error 401: Authentication Failed: Error decoding incoming SAML message 

Et dans les journaux:

29-09-2015 15:06:25,722 DEBUG org.opensaml.ws.message.decoder.BaseMessageDecoder:85 - Successfully decoded message. 
29-09-2015 15:06:25,722 DEBUG org.opensaml.common.binding.decoding.BaseSAMLMessageDecoder:191 - Checking SAML message intended destination endpoint against receiver endpoint 
29-09-2015 15:06:25,722 DEBUG org.opensaml.common.binding.decoding.BaseSAMLMessageDecoder:203 - SAML message intended destination endpoint in message was empty, not required by binding, skipping 
29-09-2015 15:06:25,723 DEBUG org.springframework.security.saml.websso.WebSSOProfileImpl:109 - No inbound message in artifact response message. 
29-09-2015 15:06:25,724 DEBUG org.springframework.security.saml.websso.WebSSOProfileImpl:122 - Could not decode artifact response message. 
org.opensaml.ws.message.decoder.MessageDecodingException: No inbound message in artifact response message. 
    at org.springframework.security.saml.websso.ArtifactResolutionProfileBase.resolveArtifact(ArtifactResolutionProfileBase.java:110) 
    at org.opensaml.saml2.binding.decoding.HTTPArtifactDecoderImpl.doDecode(HTTPArtifactDecoderImpl.java:94) 
    at org.opensaml.ws.message.decoder.BaseMessageDecoder.decode(BaseMessageDecoder.java:79) 
    at org.opensaml.saml2.binding.decoding.BaseSAML2MessageDecoder.decode(BaseSAML2MessageDecoder.java:70) 
    at org.springframework.security.saml.processor.SAMLProcessorImpl.retrieveMessage(SAMLProcessorImpl.java:105) 
    at org.springframework.security.saml.processor.SAMLProcessorImpl.retrieveMessage(SAMLProcessorImpl.java:172) 
    at org.springframework.security.saml.SAMLProcessingFilter.attemptAuthentication(SAMLProcessingFilter.java:77) 
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:195) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:166) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.saml.metadata.MetadataGeneratorFilter.doFilter(MetadataGeneratorFilter.java:86) 
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) 
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190) 
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:125) 

Dans les journaux de serveur ADFS suivants erreur arrive.

The artifact resolution request failed. 

Additional Data 
Exception message: 
MSIS3015: The signing certificate of the claims provider trust '+++++++++++++++++++++' identified by thumbprint '#################' is not valid. It might indicate that the certificate has been revoked, has expired, or that the certificate chain is not trusted.  

quelqu'un peut me aider à résoudre le problème.

Répondre

0

J'utilisé Websphere SAML TAI pour établir l'authentification unique avec ADFS. Certains liens que j'ai référé sont developerworks et techblog

0

Vous devez configurer IBM WAS en tant que partie utilisatrice dans ADFS. Lorsque nous implémenterons cette configuration, les revendications de résultat/revenu seront la source principale du chargement du profil utilisateur pour l'authentification et transmettront la réponse SAML au SP (URL de fin de votre application). Reportez-vous aux liens ci-dessous pour configurer en tant que partie de confiance pour ADFS.

https://omindu.wordpress.com/2015/06/19/setting-ad-fs-3-0-as-federated-authenticator-in-wso2-identity-server/

+0

Voulez-vous dire que si j'ai plusieurs applications Web (avec des URL différentes) dans le même WAS, je devrais faire IBM WAS en tant que partie relais pas des applications individuelles. J'essaie pour SP SSO initié. L'application Web est ajoutée en tant que relaying party sur ADFS. –

+0

Même si c'est SP initié. Le SP enveren authenNrequest et redirige vers IDP. IDP sera authentifié et enverra la réponse SAML à SP. Lorsque nous ajoutons une partie relais dans ADFS, les revendications Résultats/Revenus transmettent le profil utilisateur à IDP depuis ADFS. –

+0

Dans ce cas, IDP est le serveur ADFS. Je suis en mesure d'établir une relation de confiance entre ADFS et l'application Web/SP (déployé sur IBM WAS) et envoyer une demande d'authentification. La question est avec un certificat peut être que je ne suis pas capable d'identifier. Donc, je reçois une erreur lors du décodage de la réponse d'artefact de l'IDP. –