2009-11-12 7 views
1

il semble que le nom de paramètre dans la requête GET, qui représente la SessionID (comme jsessionid = XXXXXXXXXXXXXXXXXXXXXXXXXX dans Tomcat) n'est pas normalisée dans le servlet-spec? Comment puis-je obtenir le nom (Servelt Container Specific) du SessionID? (Au moins dans Websphere, il semble qu'il y ait la possibilité de changer le nom de SessionID-Parameter-Name)Java SessionID: Comment obtenir le nom du paramètre GET SessionID?

=> Le problème sous-jacent est, je dois encoder une URL dans une servlet ALWYAS avec l'ID de session. Mais il semble que la méthode "response.encodeURL()" ne le fasse que si les cookies sont désactivés (=> pour cela, utilisez l'URL-Rewriting avec l'identificateur de session dans l'URL).

Quelle serait une solution de rechange pour encoder toujours une URL avec un ID de session dans un servlet? La première question implique que je voulais construire le sessionid moi-même mais je dois donc besoin le nom idSession-paramètre qui semble être toutefois pas normalisée, donc je en quelque sorte d'obtenir le nom de paramètre de quelque part ...)

MISE À JOUR: L'intention est de conserver la fonctionnalité SessionManagement fournie par le conteneur de servlet et de ne pas le désactiver complètement. J'ai besoin de passer une URL de rappel à un système tiers que je veux toujours contenir le SessionURL. Donc, je veux seulement encoder cette simple URL toujours avec le idSession afin de minimiser les problèmes de sécurité ...

Merci beaucoup Jan

Répondre

3

Le jsessionid est pas réellement un paramètre de demande, il est encodée sur à l'URL elle-même, puis décodé et supprimé par le conteneur avant qu'il ne soit aussi loin que votre contrôleur. La valeur de jsessionid elle-même peut être récupérée à partir de HttpSession.getId().

Si vous voulez arrêter Tomcat d'utiliser les cookies, vous pouvez fournir un fichier context.xml spécifique à tomcat sous WEB-INF, contenant quelque chose comme ceci:

<Context cookies="false" path="/path/to/my/webapp"> 
</Context> 

Désactivera tous les cookies pour cette webapp et tomcat devrait alors encoder automatiquement tous les identifiants de session sur l'URL à la place.

+0

Bonjour skaffman, merci pour votre réponse. Votre réponse fournit des informations intéressantes que je ne connaissais pas mais ne résout pas le problème. Je souhaite conserver la gestion de session telle que fournie par le conteneur de servlet mais "forcer" le conteneur à encoder une URL spécifique que je transmettrai à un système tiers. Pour des "raisons de sécurité", je veux faire en sorte que l'URL de rappel ne repose pas sur les cookies mais contient toujours l'identifiant de session que j'ai défini dans l'URL de rappel. Comme décrit ci-dessus, je dois donc trouver un moyen de toujours encoder mon URL avec l'ID de session. merci jan. – jan

+0

L'API Servlet ne permet pas de forcer le conteneur à le faire. Vous devrez vivre avec un mécanisme exclusif pour chaque conteneur. – skaffman

+0

bonjour skaffman, merci, il semble que ce n'est pas vraiment possible ce que j'essaie de faire ... – jan

Questions connexes