Destinataire de point de terminaison ne correspond pas à la réponse SAML
Habituellement mon Printemps SAMLà base de Fournisseur de Service (SP) mise en œuvre fonctionne très bien, mais parfois, il retourne cette erreur:
[2014-07-17 16:00:58.767] boot - 1078 DEBUG [http-bio-80-exec-1] --- BaseMessageDecoder: Successfully decoded message.
[2014-07-17 16:00:58.767] boot - 1078 DEBUG [http-bio-80-exec-1] --- BaseSAMLMessageDecoder: Checking SAML message intended destination endpoint against receiver endpoint
[2014-07-17 16:00:58.768] boot - 1078 DEBUG [http-bio-80-exec-1] --- BaseSAMLMessageDecoder: Intended message destination endpoint: https://prismasp.cloud.reply.eu:443/MIUR_PRISMA-2.1-WEBUI/saml/SSO/alias/defaultAlias
[2014-07-17 16:00:58.768] boot - 1078 DEBUG [http-bio-80-exec-1] --- BaseSAMLMessageDecoder: Actual message receiver endpoint: http://prismasp.cloud.reply.eu:443/MIUR_PRISMA-2.1-WEBUI/saml/SSO/alias/defaultAlias
[2014-07-17 16:00:58.768] boot - 1078 ERROR [http-bio-80-exec-1] --- BaseSAMLMessageDecoder: SAML message intended destination endpoint 'https://prismasp.cloud.reply.eu:443/MIUR_PRISMA-2.1-WEBUI/saml/SSO/alias/defaultAlias' did not match the recipient endpoint 'http://prismasp.cloud.reply.eu:443/MIUR_PRISMA-2.1-WEBUI/saml/SSO/alias/defaultAlias'
[2014-07-17 16:00:58.782] boot - 1078 DEBUG [http-bio-80-exec-1] --- SAMLProcessingFilter: Incoming SAML message is invalid
org.opensaml.xml.security.SecurityException: SAML message intended destination endpoint did not match recipient endpoint
...
Que j'utilise (en tant que paramètre par défaut de Printemps de Sécurité) le HTTP Strict Transport Security (HSTS) sur Tomcat 7 avec SSL activé.
Est-il un moyen de corriger cette erreur?
Remarque: exemple de code source est sur Github: vdenotaris/spring-boot-sécurité-saml-échantillon.
Je pense que vous avez raté le " s " dans le protocole configuré dans votre idp point de terminaison. Vous s'attendre à "https", mais il semble que vous recevez "http".
La configuration actuelle fonctionne généralement bien, parfois, il provoque l'erreur comme ci-dessus. Je pense que le problème est autre chose. Je suis peut-être configurer manuellement les métadonnées, peut-être que j'ai raté une certaine valeur de réglage (je suis en supposant que).
Le lien me donne un "Whitelabel Page d'Erreur". Ce n'est pas un métadonnées. Aussi, c'est câblé quand vous dites "fonctionne généralement très bien", il devrait toujours ou ne fonctionne jamais ! Je pense qu'il y a quelque chose à voir avec le protocole. Peut-être que parfois vous vous connectez à partir de http et de https. Et votre idp semble attendre https.
Il y a juste un "7" au lieu de "/"
La configuration actuelle fonctionne généralement bien, parfois, il provoque l'erreur comme ci-dessus. Je pense que le problème est autre chose. Je suis peut-être configurer manuellement les métadonnées, peut-être que j'ai raté une certaine valeur de réglage (je suis en supposant que).
Le lien me donne un "Whitelabel Page d'Erreur". Ce n'est pas un métadonnées. Aussi, c'est câblé quand vous dites "fonctionne généralement très bien", il devrait toujours ou ne fonctionne jamais ! Je pense qu'il y a quelque chose à voir avec le protocole. Peut-être que parfois vous vous connectez à partir de http et de https. Et votre idp semble attendre https.
Il y a juste un "7" au lieu de "/"
OriginalL'auteur vdenotaris | 2014-07-17
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas pourquoi votre problème survenant au hasard, mais au moins un moyen pour résoudre ce problème, vous pouvez configurer
SAMLContextProviderLB
au lieu de votreSAMLContextProviderImpl
.La
SAMLContextProviderLB
est généralement utilisé pour indiquer le Printemps SAML public sur l'URL publique utilisée sur un reverse proxy ou d'équilibrage de charge, mais dans ce cas vous pouvez utiliser pour forcer le Printemps SAML à penser que c'est en utilisant le protocole HTTPS. Vous pouvez trouver plus de détails dans le chapitre 10.1 Configuration Avancée de la Printemps SAML manuel.Vous devez également vous assurer de bien définir la propriété
entityBaseURL
sur votreMetadataGenerator
bean, parce que sans le faire les métadonnées générées dépend de si vous faites d'abord demander à votre application en utilisant le protocole http ou https. Encore une fois, tout cela est documenté.TLSProtocolConfigurer
, voir: docs.printemps.io/printemps-sécurité-saml/docs/2.0.x/de référence/...OriginalL'auteur Vladimír Schäfer