#jsf #richfaces #jsf-1.2 #siteminder
#jsf #richfaces #jsf-1.2 #siteminder
Вопрос:
Окружающая среда
- Richfaces 3.3.3
- JSF 1.2
- Сайтоиндер
Требование
Пользователь вводит требуемый адрес приложения. Siteminder перехватывает и запрашивает имя пользователя и пароль. Клиент предоставляет учетные данные. Клиенты используют приложение и нажимают на кнопку выхода / выхода. Приложение уничтожает сеансы и перенаправляет 302 на тот же адрес приложения, и Siteminder должен снова перехватить.
Проблема
Я пытаюсь выйти из приложения richfaces, которое вошло в систему из siteminder. после выхода из системы, вместо перехода на страницу входа в siteminder, он возвращается на главную страницу приложения. Похоже, что это убивает сеанс приложения, но не сеанс siteminder. Есть ли способ выйти из siteminder?
Код
public String logout() {
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
HttpSession session = (HttpSession)ec.getSession(false);
if (session != null) {
session.invalidate();
}
try {
String redirectPath = "https://abcd.xyz.com/context/start.jsf";
ec.redirect(redirectPath);
} catch (IOException e) {
e.printStackTrace();
}
return null;
Войти
com.ibm.ws.webcontainer.servlet.ServletWrapper doDestroy SRVE0253I [имя хоста] [/context] [uri]: Успешно уничтожить. com.ibm.ws.webcontainer.servlet.Инициализация ServletWrapper SRVE0242I [имя хоста] [/context] [uri]: Инициализация прошла успешно.
Ответ №1:
Я принудительно выполняю перенаправление, используя приведенный ниже код в servletfilter, если значение SM_USER в заголовке равно нулю / пусто.
if(servletPath.trim().equals("/login/logout.do")){
log.debug("User Logged Out. Redirecting to " contextPath homeLink);
RequestDispatcher rd = request.getRequestDispatcher(homeLink);
rd.forward(request, response);
return;
}
Ответ №2:
Необходимо обновить объект конфигурации агента (ACO) для веб-агента, на котором размещено приложение. Параметр LogOffUri указывает веб-агенту SiteMinder уничтожить SMSESSION (фактически устанавливает значение LOGGEDOFF).
Если вы настроите URI, указанный в параметре LogOffUri ACO, для перенаправления пользователя обратно на основной URL-адрес приложения, веб-агент обнаружит, что SMSESSION недействителен, и отправит пользователя на страницу входа в систему.