Контекст
У моєму поточному проекті я вимагаю підтвердити, що запити, що надходять до GeoServer (2.3.0), дозволені.
Проект має такі факти:
- клієнт GS не може надати основну інформацію (наприклад, пароль), сам GS не має зв'язку з репо-користувачем / роллю
Тому ми скористалися можливістю використовувати механізм фільтра автентичності, щоб перевірити:
- дійсний запит (на певний рівень WFS) містить спеціальний заголовк HTTP (скажімо, X-CUSTOM-VALID)
- Це заголовок - це закодоване JSON повідомлення, що містить достатньо інформації для перевірки того факту, що запит був ініційований клієнтом, який був підключений до дійсної третьої системи (ім’я користувача, секрет, такі речі)
Статус
Документація говорить нам , що ми повинні бути в змозі зробити це ...
Однак із документації не зрозуміло, як створити такі компоненти та як їх слід налаштувати.
Налагоджуючи GeoServer, мені вдалося встановити, що для налаштування такого фільтра потрібен спеціальний постачальник аутентифікації. Це, щоб мати панель в інтерфейсі веб-адміністратора (під автентифікацією, у списку Фільтрів аутентифікації)
Панель
Таким чином мій код складається з таких файлів:
- ProducteurAuthFilterPanel.java
- ProducteurAuthFilterPanelInfo.java
- ProducteurAuthenticationFilterConfig.java
- ProducteurAuthenticationFilterPanel.html
До них потрібно додати панель в інтерфейсі веб-адміністратора. ProducteurAuthFilterPanelInfo
склеює два інших разом з наступним ProducteurAuthenticationFilter
(THE filter ^^).
ProducteurAuthenticationFilterConfig
Заявляє , що в його конструкторі:
setClassName(ProducteurAnonymousAuthenticationProvider.class.getName());
setName("producteur");
Фільтр (і постачальник)
Тепер класи, необхідні для створення фільтра, який слід включити до ланцюга (я думаю):
- ProducteurAuthenticationFilter : розширення
GeoServerSecurityFilter
та реалізація фільтраGeoServerAuthenticationFilter
- ProducteurAnonymousAuthenticationProvider: якось вимагається панеллю (вище) для визначення нового фільтра
- ProducteurAuthenticationException: використовується в AuthenticationEntryPoint (наразі лише Http403ForbiddenEntryPoint)
Нарешті, квасоля визначається так:
<bean id="yaanonymousFilterProvider" class="dgarne.java.geoserver.security.ProducteurAnonymousAuthenticationProvider"/>
<bean id="producteurAuthPanelInfo" class="dgarne.java.geoserver.security.ProducteurAuthFilterPanelInfo">
<property name="id" value="security.producteurAuthFilter" />
<property name="shortTitleKey" value="ProducteurAuthFilterPanel.short"/>
<property name="titleKey" value="ProducteurAuthFilterPanel.title"/>
<property name="descriptionKey" value="ProducteurAuthFilterPanel.description"/>
</bean>
Наприкінці гри в інтерфейсі веб-адміністратора з'явився новий елемент на панелі фільтру, і я використовував його у картографуванні за замовчуванням (див. Зображення нижче для довідок):
Опис проблеми
Ми на місці...
Жоден мій запит WFS, виданий клієнтом (OpenLayers), який відповідає картографуванню за замовчуванням (/ **), не проходить через визначений фільтр. Під час налагодження я виявив, що ланцюги фільтрів, визначені у Весняному контексті, ніколи не включають моє визначення, а завжди включають класичний, використовуючи або анонімний, дайджест або базовий ...
Питання
То чи може хтось вказати мені на (набагато ^^) більш повну документацію про те, як мені це зробити?