Spring Security & CAS - Резервное копирование страницы входа в систему в случае сбоя CAS?

У меня есть приложение, которое подключается к серверу CAS, позволяет пользователю выполнить вход в систему CAS / SSO, а затем перенаправляет их на домашнюю страницу приложения. Достаточно просто.

Проблема в том, что CAS является относительно новым для моей организации, и на сегодняшний день у нас он установлен только на одном сервере. Таким образом, если сервер становится недоступным по какой-либо причине, к приложению больше нельзя будет получить доступ, поскольку страница входа в CAS не загрузится.

Я бы хотел, чтобы мое приложение могло обнаруживать
а) сервер CAS недоступен после разумного количества повторных попыток б) впоследствии перенаправить пользователя на страницу входа без CAS / SSO и использовать базовую конфигурацию Spring Security, которая существует с использованием LDAP.

Я ничего не вижу в документации Spring для этого конкретного сценария. Предложения?

0
0
102
1

Ответы 1

Вы можете попробовать расширить CasAuthenticationEntryPoint. Точки входа в Spring Security - это вещи, которые определяют, куда идти, когда необходима аутентификация.

public LocalLoginFallbackCasAuthenticationEntryPoint 
    extends CasAuthenticationEntryPoint {

    @Override
    protected String createRedirectUrl(final String serviceUrl) {
        if ( prevailingCircumstancesMandate() ) {
            return "/our/legacy/login/page";
        } else {
            // go to CAS, like normal
            return super.createRedirectUrl(serviceUrl);
        }
    }
}

А затем настройте в своем объекте HttpSecurity:

@Override
protected void configure(HttpSecurity http) {
    http.exceptionHandling()
            .authenticationEntryPoint(myCustomEntryPoint());
}

Спасибо за ответ, Джош. Я изучаю его со вчерашнего дня, и где я застрял, это часть «преобладающих обстоятельств». Ожидается, что URL-адрес точки входа CAS, который я возвращаю, будет недоступен, поэтому я не получаю никакого ответа. Я не могу понять, как это определить. Только когда я знаю, что этот URL-адрес недоступен, я передам свою настраиваемую точку входа. Я продолжу исследовать. Предложения приветствуются. Спасибо.

user1825770 13.04.2018 18:41

Короче говоря, нельзя. После перенаправления на другую службу эта служба должна обрабатывать этот запрос. Что можно сделать относительно легко, так это подумать об этом с точки зрения обнаружения сервисов. Например, «преобладающие обстоятельства» могут быть просто свойством конфигурации: например, should.we.redirect.to.cas = true. Затем, возможно, вы могли бы автоматизировать мониторинг сервера CAS на предмет 500 и 400 отсчетов состояния, и как только этот счет превысит определенный порог, автоматизация переключит значение конфигурации на определенный период времени, а затем вернет его обратно.

jzheaux 15.04.2018 00:45

Другие вопросы по теме