Spring Security x509 успешной аутентификации - PullRequest
1 голос
/ 04 апреля 2011

Есть ли способ установить цель по умолчанию при использовании x509? Например, если бы я использовал обычную форму auth, у меня было бы что-то вроде:

<security:form-login login-page="/login" always-use-default-target="true" authentication-failure-url="/login?error=1" default-target-url="/summarylogin"/>

Ниже приведены мои настройки:

<security:http auto-config="true" use-expressions="true" entry-point ref="forbiddenAuthEntryPoint">
        <security:x509 subject-principal-regex="CN=(.*?)," user-service-ref="dashboardUserDetailsService" />
        <security:intercept-url pattern="/static/**" filters="none"/>
        <security:intercept-url pattern="/**" access="hasAnyRole('ADMIN', 'USER')" />
        <security:session-management invalid-session-url="/login" />
        <security:session-management>
            <security:concurrency-control max-sessions="5" error-if-maximum-exceeded="true" />
        </security:session-management>
    </security:http>

    <security:authentication-manager>
        <security:authentication-provider user-service-ref="dashboardUserDetailsService">
        </security:authentication-provider>
    </security:authentication-manager>

1 Ответ

0 голосов
/ 15 марта 2012

С form-auth у вас есть страница входа в систему, к которой пользователь обращается до аутентификации. Таким образом, вы указываете default-target - куда отправлять пользователя после успешной авторизации.

Но с аутентификацией сертификата клиента X.509 у вас нет страницы входа. Пользователь вводит некоторый URL в своем браузере, контейнер проверяет свой сертификат и в случае успеха позволяет пользователю получить доступ к введенному URL.

Если вы хотите показать что-то вроде страницы «приветствия», которая всегда должна отображаться при входе в систему, вы можете написать фильтр сервлета, который будет проверять какой-либо флаг в сеансе, и перенаправлять пользователя на страницу «приветствия», если флаг не установлен.

...