Résolution de l'erreur SSO : "The end instant must be greater or equal to the start"

Problème :
Le SSO (Single Sign-On) échoue sur iObeya. Les logs de l'IdP montrent des connexions réussies. Les traces de SAML Tracer semblent correctes. Cependant, iObeya continue de rencontrer le message d'erreur suivant :
Caused by: java.lang.IllegalArgumentException: The end instant must be greater or equal to the start.

 

Solution :

Pour résoudre ce problème, vous devez vous assurer que la valeur du paramètre "Maximum authentication age" est inférieure à Integer.MAX_VALUE : 2147483647.

 

Pour plus de détails :

La source de ce message d'erreur "The end instant must be greater or equal to the start" est liée au paramètre SAML "Maximum authentication age" atteignant la valeur de Integer.MAX_VALUE (une valeur excessivement élevée qui fait échouer les calculs de temps de réponse).

Le problème réside dans la classe SAMLUtil de la dépendance spring-security-saml2-core. Dans cette méthode, la valeur de "Maximum authentication age" est passée dans le paramètre forwardInterval en tant que type long. Ensuite, elle est convertie en int, et la variable prédéfinie skewInSec=60 est ajoutée pour appeler la méthode DateTime#minusSeconds. Par conséquent, si la somme de forwardInterval et skewInSec dépasse la limite d'entiers, le résultat sera plus proche de Integer.MIN_VALUE (une valeur inférieure à 0), potentiellement en convertissant la soustraction en une addition de secondes.

 

Si vous rencontrez d'autres problèmes ou avez besoin d'une assistance supplémentaire, n'hésitez pas à contacter notre équipe de support.

AdministrationApplication
Views: 6