powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Инвалидировать чужую http сессию
25 сообщений из 40, страница 1 из 2
Инвалидировать чужую http сессию
    #39352979
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Подскажите, как лучше (и можно ли вообще) инвалидировать чужую сессию?

Я могу сохранить все сессии в какую-нибудь глобальную мапу и получить инстанс HttpSession по имени пользователя, допустим - не вопрос. Но на сколько безопасно вызывать метод invalidate() на такой "сохраненной" (т.е. полученной не законным путем с точки зрения контейнера сессии). Я могу так же не вызывать invalidate а вызвать setMaxInactiveInterval(1) допустим, что тоже проинвалидирует сессию. Но вопрос - не огребусь ли я потом проблем с таким решением?

Спасибо!
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353006
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiter,

Ну а как админы работают?
Не сам же юзверь делает себе харакири.
Думаю это штатная работа.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353007
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чутье мне подсказывает что не все так просто
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353072
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiter,
а что происходит при превышении времени сессии?
для сервера все сессии свои, чужих нет.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353112
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадядля сервера все сессии свои, чужих нет.
) действительно.

rabiterЧутье мне подсказывает что не все так просто
а ты проверь чуйку. Напиши строчку и нажми "Пуск".
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353128
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiterЧутье мне подсказывает что не все так просто
я при превышение времени бездествия юзера с сервером - инвалидирую сессию, и командой с сервера перевожу браузер на страницу авторизации.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353191
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123rabiterЧутье мне подсказывает что не все так просто
а ты проверь чуйку. Напиши строчку и нажми "Пуск".
Проверить-то я проверю. Оно сейчас заработает, а на другом сервере или в кластере возьмет и не заработает. Мне надо наверняка знать.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353195
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяrabiterЧутье мне подсказывает что не все так просто
я при превышение времени бездествия юзера с сервером - инвалидирую сессию, и командой с сервера перевожу браузер на страницу авторизации.

Вы понимаете, почему я сомневаюсь, мы ведь не знаем, что там за HttpSession сервер нам подсовывает, чтобы так вот взять и сохранить в глобальной HashMap и потом переиспользовать. А вдруг это вообще какая-нибудь прокси или обертка, которая фиг знает куда ведет. Сейчас к сессии, а потом внутри у сервака что-нибудь щелкнуло, он что-нибудь у себя подчистил, и вуаля, в руках у тебя голая прокси или обертка, на которой хоть завызывайся invalidate. Вы понимаете? Но у вас почти такой же сценарий, что и в моем случае. Мне надо собственный механизм инвалидации сессии сделать. Для этого и хотел сохранять сессии. Говорите у вас никаких проблем не было с такой имплементацией?
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353201
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот здесь, например, пишут, что не стоит так делать
http://stackoverflow.com/questions/13793119/store-and-invalidate-java-httpsession-from-different-user
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353278
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiter,
это не стоит делать в том случае , если юзер активно работает и его работа прерывается.
если юзер не взаимодействует с сервером - считается, что он не работает со страницей. это, конечно, чисто условное правило.
тогда и можно инвалидировать сессию.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353305
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiter,
поставь время сессии в 2 минуты и посмотри что будет. весь вопрос сводится к цели прерывания сессии.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353337
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аффтар! Термины где то что щелкнуло и где то что почистил это термины домохозяек.
Как обычно тебе лень разбираться со штатным и проще писать мапу.
Я свой каждый кусок кода тестирую. А ты пишешь с закрытым глазом для каких то кластеров на будущее.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353339
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiterЯ могу сохранить все сессии в какую-нибудь глобальную мапу и получить инстанс HttpSession по имени пользователя, допустим - не вопрос. Но на сколько безопасно вызывать метод invalidate() на такой "сохраненной" (т.е. полученной не законным путем с точки зрения контейнера сессии).

Для начала надо сказать, что за контейнер.
Потому что когда jetty+guice+самопальная авторизация то всё работает именно так.
А если есть spring/javaee/... то надо смотреть, что там УЖЕ ЕСТЬ для этого.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353342
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть события старта и конца сессии у каждого юзверя.
Если в api нет поиска, то делаешь свой список.
Потом обнуляешь сессию того кого нужно.
Быстрее попробовать чем обсуждать открыв Ослик и фокс на экране.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353420
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Аффтар! Термины где то что щелкнуло и где то что почистил это термины домохозяек.
Как обычно тебе лень разбираться со штатным и проще писать мапу.
Я свой каждый кусок кода тестирую. А ты пишешь с закрытым глазом для каких то кластеров на будущее.

Вы нормальный?
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353423
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiter,
скажу тебе ещё проще. Ты написал много воды.
И ничего конкретного.
Предлагаю перейти к коду.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353439
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сервера приложения могут быть разные в моем случае: wildfly 10, GlassFish 4, в будущем намечается web sphere (хотя надеюсь нет)
Никого разве не смущает сама идея взять и сохранить такой технический объект как httpsession в мапе чтобы из под другого потока взять ее и инвалидовать?
Задача такая - иметь возможность инвалидировать чужие сессии (допустим для администратора)
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353447
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiterЗадача такая - иметь возможность инвалидировать чужие сессии (допустим для администратора)
У Tomcat в админке есть такое. Уверен у других контейнеров тоже.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353449
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiterЧутье мне подсказывает что не все так просто
Ваше чутьё вас обманывает на этот раз.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353469
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Спасибо! Админка сервера приложений не подойдет, нужна своя страничка.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353477
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiterСпасибо! Админка сервера приложений не подойдет, нужна своя страничка.
Своя страничка, которая через JMX работает с контейнером?
Если вас очень сильно пугает перспектива держать коллекцию из HttpSession, то собирайте только jsessionid.
А валидируйте сессию дополнительно фильтром при запросе.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353500
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Да, как запасной вариант у меня именно валидировать сессию при запросе. Про JMX - никогда не использовал, спасибо за наводку.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353503
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiterЗадача такая - иметь возможность инвалидировать чужие сессии (допустим для администратора)
OK
скажу в двадцатый раз.
Для такой задачи ничего изобретать не надо.
Вот, например, у SSO посложнее, т.к. там контроль идёт не на своём сервере, а на том который и даёт общую сессию между серверами.
Для вашей задачи это оверхед.
Удачи!
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
/*
 * The contents of this file are subject to the Mozilla Public 
 * License Version 1.1 (the "License"); you may not use this 
 * file except in compliance with the License. You may obtain 
 * a copy of the License at http://www.mozilla.org/MPL/
 * 
 * Software distributed under the License is distributed on an 
 * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express 
 * or implied. See the License for the specific language governing
 * rights and limitations under the License.
 *
 *
 * The Original Code is OIOSAML Java Service Provider.
 * 
 * The Initial Developer of the Original Code is Trifork A/S. Portions 
 * created by Trifork A/S are Copyright (C) 2009 Danish National IT 
 * and Telecom Agency (http://www.itst.dk). All Rights Reserved.
 * 
 * Contributor(s):
 *   Joakim Recht <jre@trifork.com>;
 *   Rolf Njor Jensen <rolf@trifork.com>;
 *
 */
package dk.itst.oiosaml.sp.service.session;

import javax.servlet.http.HttpSession;

import org.opensaml.saml2.core.Assertion;

import dk.itst.oiosaml.sp.model.OIOAssertion;

/**
 * Handle session state across requests and instances.
 * 
 * <p>Due to SOAP Logout, it is not possible to store all state in the HTTP session. Instead, implementations of this interface handle session state,
 * primarily based on the HTTP session.<p> 
 * 
 * <p>Implementations are expected to be thread-safe, and should not store any instance state, as a new instance will be created for
 * every request.</p>
 * 
 * @see SessionHandlerFactory
 */
public interface SessionHandler {

	/**
	 * Associate an assertion with a given session.
	 * 
	 * @throws IllegalArgumentException If the assertion is being replayed. Implementations must check that the assertion id has not been seen before.
	 */
	public void setAssertion(String sessionId, OIOAssertion assertion) throws IllegalArgumentException;

	
	/**
	 * @return true if the session is logged in and has a non expired assertion,
	 *         false otherwise. 
	 */
	public boolean isLoggedIn(String sessionId);
	
	/**
	 * Mark a given session as it has been logged out by removing it the
	 * assertion from the session.
	 */
	public void logOut(HttpSession session);
	
	/**
	 * Mark a given session as it has been logged out by removing it the associated
	 * assertion
	 * 
	 * @param sessionId
	 */
	public void logOut(String sessionId);
	
	/**
	 * @return The {@link Assertion} associated with the session. <code>null</code> if there is no assertion.
	 */
	public OIOAssertion getAssertion(String sessionId);
	
	/**
	 * @param sessionIndex
	 *            The sessionIndex from the assertion
	 * @return The sessionId associated with the sessionIndex in case there is
	 *         one, otherwise null
	 */
	public String getRelatedSessionId(String sessionIndex);
	
	public void registerRequest(String id, String receiverEntityID);
	
	
	/**
	 * Remove a request id from the list of registered request ids and return the registered IdP entity id.
	 * @param id
	 * @throws IllegalArgumentException If the request id is unknown.
	 */
	public String removeEntityIdForRequest(String id) throws IllegalArgumentException;

	/**
	 * Clean stored ids and sessions.
	 * 
	 * @param requestIdsCleanupDelay Milliseconds to store assertion ids for replay prevention.
	 * @param sessionCleanupDelay Milliseconds to store session data before purging (in case logout has not been called).
	 */
	public void cleanup(long requestIdsCleanupDelay, long sessionCleanupDelay);
	
	/**
	 * Set the max number of assertion ids to track for replay protection, and reset the cache.
	 * @param maxNum
	 */
	public void resetReplayProtection(int maxNum);

	/**
	 * Save information about a request.
	 * 
	 * The information saved can be retrieved later on using getRequest to replay the request after the user has been authenticated.
	 * 
	 * @return A unique opaque string, no more than 72 characters long.
	 */
	public String saveRequest(Request request);
		
	/**
	 * Get the request for a state identifier.
	 * 
	 * @param state
	 * @throws IllegalArgumentException If the state identifier is unknown.
	 */
	public Request getRequest(String state) throws IllegalArgumentException;
}
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353506
rabiter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, как минимум под WildFly
Код: java
1.
httpRequest.getSession()


Каждый раз для одного и того же пользователя возвращает разные инстансы класса HttpSession:


Это меня и напрягает немного. Т.е. я возьму один из них и сохраню в мапе.
...
Рейтинг: 0 / 0
Инвалидировать чужую http сессию
    #39353508
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rabiterКаждый раз для одного и того же пользователя возвращает разные инстансы класса HttpSession:
в одной сессии?
Выведи в лог 2-3 запроса по одной сессии для одного юзверя.
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Инвалидировать чужую http сессию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]