2008-08-11 18 views

Odpowiedz

8

This defect (znaleziono here) wskazuje drogę do rozwiązania. Instancja Tomcat działająca w JBoss jest skonfigurowana z opcją emptySessionPath = "true", a nie "false", która jest domyślna. Można to zmienić w .../deploy/jboss-web.deployer/server.xml; oba złącza HTTP i AJP mają tę opcję.

Sama funkcja służy do eliminacji ścieżki kontekstowej (np. "Foo" w http://example.com/foo) z pliku cookie JSESSIONID. Ustawienie na wartość false spowoduje złamanie aplikacji opartych na uwierzytelnianiu z użyciem wielu aplikacji, co obejmuje elementy zbudowane przy użyciu niektórych frameworków portalu. Nie wpłynęło to jednak negatywnie na daną aplikację.

+0

pracuję z JBoss 6.1 i po prostu hit tego problemu. W moim pliku server.xml nie ma opcji emptySessionPath. Jak to zrobić w wersji 6.1? –

+1

Jeśli ktoś jeszcze jest zainteresowany, znalazłem rozwiązanie. Poszukaj odpowiedzi @ Rp- w tym wątku: http://stackoverflow.com/questions/11028145/listening-for-login-events-in-jboss-as-6 –

0

Ten problem i specyficzny przypadek, w którym występuje, jest problemem zarówno w Tomcat, jak i JBoss. Tomcat współużytkuje efekt emptySessionPath = "true" (a właściwie JBoss dziedziczy go z Tomcat).

To naprawdę wygląda na błąd w Tomcat i JBoss, gdy próbujesz zapobiec atakom związanym z sesją, ale specyfikacja serwletu (przynajmniej wersja 2.3) nie wymaga zdefiniowania lub ponownego zdefiniowania JSESSIONID zgodnie z jakąkolwiek określoną logiką. Być może zostało to wyczyszczone w późniejszych wersjach.

0

Jednym z obejść jest przechowywanie adresu klienta w sesji. Opakowanie odpowiedzi powinno sprawdzać, czy adres klienta ustawiony w sesji jest taki sam, jak adres dostępu do sesji.

+0

Twoja sugestia jest przydatna do ogólnego przejmowania sesji, ale nie odnosi się konkretnie do naprawy sesji. –

0

Znalazłem poniższy fragment kodu kodu z jednego z czterech elementów. I dodałem poniżej linie. Ale kiedy drukuję identyfikator sesji po i przed zalogowaniem się do aplikacji, to jest to samo. Jak mogę przetestować utrwalenie sesji?

  1. D: \ jboss-5.1.0.GA \ bin \ run.cof plik i dodaj poniższą linię. zestaw "JAVA_OPTS =% JAVA_OPTS% -Dorg.apache.catalina.connector.Request.SESSION_ID_CHECK = false"

  2. w każdym context.xml z JBoss aplikacji. D: \ jboss-5.1.0.GA \ server \ default \ deploy \ jbossweb.sar \ context.xml