2010-09-02 2 views
1

Я работаю в websphere 7.0. Я использую безопасность с сервера приложений. Я хотел бы удалить связь с пользователем, так что пользователь перенаправляется на страницу входа в систему до доступа к защищенному ресурсу (а request.getUserPrincipal() возвращает null).Как выйти из защищенной контейнером Java EE?

Старается:

request.getSession() недействительным();.

, но основной пользователь по-прежнему связан.

Как я могу удалить эту ассоциацию?

+0

ли возможность отправки на стороне клиента перенаправления HTTP 302 logout url? Это можно сделать, используя Javascript или манипулируя заголовком ответа HTTP. – Aaron

+0

Как вы перенаправляете клиента на страницу входа в систему до их аутентификации? Есть ли фильтр, который проверяет, имеет ли запрос UserPrincipal? –

+0

Я использую настройку безопасности java в web.xml, контейнер сервлета перенаправляет доступ к защищенным ресурсам на страницу входа. –

ответ

4

На WebSphere, специальная форма выхода из системы Кальес необходимо использовать:

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

Вот что я использую:

<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

Нет, это * must * not. Согласно документации это просто удобный способ выхода из системы без необходимости аннулировать «целую» сессию. – BalusC

+0

Недействительный сеанс не работал, пользовательский принцип все еще присутствовал. Если у вас есть лучший способ сделать это, я хотел бы знать. –

+6

ibm_security_logout - это не просто ярлык для недействительности сеанса, он выполняет следующие действия: 1. Удаляет файлы с облегченной сторонней аутентификацией (LTPA)/единого входа (SSO) 2. Недействительно HTTP-сеанс 3. Удаляет пользователя из проверки подлинности кэш. Даже если ваш сеанс недействителен при вызове HttpSession # invalidate(), этого недостаточно. Ваш файл cookie LTPA остается действительным и позволяет вам обращаться к приложениям с использованием единого входа без входа в систему, поэтому вы должны позвонить ibm_security_logout. – svachon

Смежные вопросы