мне нужно настроить мой процесс аутентификации таким образом:пружина безопасности - позиционирование пользовательских фильтров
- Клиент посылает запрос (REST API) с «особой» URL PARAM
- Сервер называет третьей стороной прохождения службы параметр и имя получателя
- Сервер ищет базу данных по имени, и это аутентифицированный директор.
Я разделил мою сторону сервера (2 + 3) на две части - пользовательский фильтр для (2), который получает имя пользователя - и пользовательские userdetailservice
для (3), который строит принципала путем поиска имени в базе данных.
Но я не могу правильно построить свой security.xml
- каждый раз, когда кажется, что он не обрабатывает фильтр вообще. Я думаю, проблема в первом (http) узле, но я не могу понять, какую позицию я должен настроить для фильтра. Вот моя конфигурация:
<http use-expressions="true" auto-config="true" authentication-manager-ref="authenticationManager">
<intercept-url pattern="/*" access="isAuthenticated" />
<custom-filter ref="casServiceTicketFilter" position="FIRST"/>
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="wliAuthenticationService"/>
</authentication-manager>
<b:bean id="casServiceTicketFilter" class="org.WLICASAuthenticationFilter">
<b:property name="casTicketValidateURL" value="${cas.ticket.validate.url}"/>
<b:property name="authenticationManager" ref="authenticationManager"/>
</b:bean>
<b:bean id="wliAuthenticationService" class="org.WLIUserDetailService"/>
PS- Пожалуйста, не говорите мне, что Spring имеет поддержку CAS из коробки. Это немного различная конфигурация, поэтому мне нужно создать мою собственную реализацию валидатора обслуживания билетов
Hi Luke. Как насчет позиции 'CAS_FILTER'? Или это не имеет значения? –
Это тоже сработает, но не имеет значения, есть ли у вас единственный фильтр проверки подлинности. –