Выход из JSF Siteminder

#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 недействителен, и отправит пользователя на страницу входа в систему.