2010-09-02 5 views
1

Je travaille dans websphere 7.0. J'utilise la sécurité du serveur d'application. Je voudrais supprimer l'association avec l'utilisateur, donc l'utilisateur est redirigé vers la page de connexion avant d'accéder à une ressource sécurisée (et request.getUserPrincipal() renvoie null).Comment me déconnecter de la sécurité gérée par conteneur Java EE?

J'essaie:

request.getSession() invalide();.

mais le principal utilisateur est toujours associé.

Comment puis-je supprimer cette association?

+0

Est-ce une possibilité d'envoyer une redirection côté client HTTP 302 à l'URL de déconnexion? Cela pourrait être fait en utilisant Javascript ou en manipulant l'en-tête de réponse HTTP. – Aaron

+0

Comment redirigez-vous le client vers la page de connexion avant de s'authentifier? Y a-t-il un filtre qui vérifie si la requête a un UserPrincipal? –

+0

J'utilise java security configure dans le fichier web.xml, le conteneur servlet redirige l'accès aux ressources protégées vers la page de connexion. –

Répondre

4

Sur websphere, un calles spécial de formulaire de fermeture de session doivent être utilisés:

http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/tsec_pofolo.html

Voici ce que je suis en utilisant:

<body onload="javascript:document.logout.submit()"> 
    <h2>Sample Form Logout</h2> 
    <form METHOD=POST ACTION="ibm_security_logout" NAME="logout"> 
    Click this button to log out: 
    <input type="submit" name="logout" value="Logout"> 
    <INPUT TYPE="HIDDEN" name="logoutExitPage" VALUE="/some url"> 
    </form> 
</body> 
+0

Non, il * ne doit pas *. Selon la documentation, il s'agit simplement d'un moyen pratique de se déconnecter sans avoir besoin d'invalider la session "entière". – BalusC

+0

L'invalidation de la session ne fonctionnait pas, le principal utilisateur était toujours présent. Si vous avez une meilleure façon de le faire, j'aimerais savoir. –

+6

ibm_security_logout n'est pas seulement un raccourci pour invalider la session, il fait ce qui suit: 1. Efface les cookies LTPA (Lightweight Third Party Authentication)/authentification unique (SSO) 2. Invalide la session HTTP 3. Enlève l'utilisateur de l'authentification cache Même si votre session est invalidée lors de l'appel de HttpSession # invalidate(), cela ne suffit pas. Votre cookie LTPA reste valide et vous permet d'accéder aux applications en utilisant SSO sans vous connecter, et c'est pourquoi vous devez appeler ibm_security_logout. – svachon

Questions connexes