2010-10-28 13 views
2

Est-ce que quelqu'un a rencontré le problème avec la connexion de sécurité de printemps lorsque l'autorisation de base est activée sous Tomcat?Conflit entre la sécurité du ressort et l'autorisation de base de Tomcat

Il est simplement impossible de se connecter lorsque la page de connexion est chargée après la déconnexion. Si vous actualisez la page et réessayez, tout va bien:) (.

+0

Vous devez changer la seconde moitié de votre « message » en réponse à la question de la première moitié . Ensuite, vous pouvez recevoir une certaine réputation pour cela! –

+0

Merci pour la suggestion! :) – Edgar

+0

Et voilà. :-) –

Répondre

5

Je n'ai pas trouvé de plainte sur un tel comportement et j'ai passé toute la journée à trouver le problème. bug dans le Tomcat, qui est disponible dans les versions de 6.0.20 à 6.0.28 (Bug 49598)

Le problème est que les deux, l'autorisation de base de Tomcat et la sécurité de printemps remplacent la session pendant la demande d'autorisation. session, demande de connexion directe après avoir déclenché les deux remplacements de session lors de la même requête, mais dans le résultat du bogue, l'en-tête Set-Cookie dans la réponse reste à pointer sur l'identifiant de session donné par Tomcat (qui est invalidé par Spring). la sécurité, car il travaille à l'arrière er). Ainsi, la prochaine requête envoie le cookie de la session déjà détruite. Et la session créée par Spring (qui contient un utilisateur signé) reste non réclamée.

La meilleure solution est Tomcat 6.0.29 :-). Si quelqu'un a un problème avec la mise à niveau Tomcat, il y a 3 possibilités pour éviter le bug:

  1. séance Désactiver le remplacement de Tomcat. Vous pouvez le faire la configuration de la vanne dans le context.xml

    <Valve className="org.apache.catalina.authenticator.BasicAuthenticator" 
               changeSessionIdOnAuthentication="false"/> 
    
  2. remplacement de la session Désactiver la configuration de sécurité Spring security.xml.

    <http ... session-fixation-protection="none"> 
        ..... 
    </http> 
    
  3. Fournir une redirection supplémentaire après la déconnexion. De cette façon Tomcat aura un principe mis en cache dans la session lors de la demande de connexion.

Peut-être que cela protège quelqu'un devient fou comme moi hier :)

En ce qui concerne, Edgar