문맥
현재 프로젝트에서 GeoServer (2.3.0)로 들어오는 요청이 허용되는지 확인해야합니다.
이 프로젝트에는 다음과 같은 사실이 있습니다.
- GS 클라이언트는 주요 정보 (예 : 비밀번호)를 제공 할 수 없습니다. GS 자체는 사용자 / 역할 저장소와 연결되어 있지 않습니다.
따라서 인증 필터 메커니즘을 사용하여 다음을 확인했습니다.
- 유효한 특정 요청 (특정 WFS 계층에 대한)에는 특수한 HTTP 헤더 (X-CUSTOM-VALID라고 함)가 포함됩니다.
- 이 헤더는 유효한 세 번째 시스템 (사용자 이름, 비밀, 이와 유사한 것들)에 연결된 클라이언트가 요청을 시작했다는 사실을 검증하기에 충분한 정보를 보유한 JSON 인코딩 메시지입니다.
상태
문서는 우리가 그렇게 할 수 있어야한다고 우리에게 말하고있다 ...
그러나 이러한 구성 요소를 만드는 방법과 구성 방법에 대한 설명서는 명확하지 않습니다.
GeoServer 디버깅 그런 필터를 구성하려면 전용 인증 공급자가 필요하다는 것을 알았습니다. 즉, 웹 관리 인터페이스에 패널을 만들려면 (인증 아래의 인증 필터 목록에 있음)
패널
따라서 내 코드는 해당 파일로 구성됩니다.
- ProducteurAuthFilterPanel.java
- ProducteurAuthFilterPanelInfo.java
- ProducteurAuthenticationFilterConfig.java
- ProducteurAuthenticationFilterPanel.html
Web Admin Interface에 패널을 추가해야합니다. ProducteurAuthFilterPanelInfo
다음과 함께 두 가지를 붙입니다 ProducteurAuthenticationFilter
(THE 필터 ^^).
ProducteurAuthenticationFilterConfig
선언자는 생성자에서 다음을 선언합니다.
setClassName(ProducteurAnonymousAuthenticationProvider.class.getName());
setName("producteur");
필터 및 공급자
이제 클래스는 체인에 포함 할 필터를 만들어야했습니다.
- ProducteurAuthenticationFilter : 확장
GeoServerSecurityFilter
및 구현 필터 구현GeoServerAuthenticationFilter
- ProducteurAnonymousAuthenticationProvider : 어쨌든 새 필터를 정의하기 위해 패널 (위)에 필요합니다.
- ProducteurAuthenticationException : AuthenticationEntryPoint에서 사용됨 (현재는 Http403ForbiddenEntryPoint 만 해당)
마지막으로 Bean은 다음과 같이 정의됩니다.
<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>
게임이 끝나면 Web Admin Interface에서 필터 패널에 새 항목을 만들고 기본 매핑에서 사용했습니다 (아래 이미지 참조).
문제 설명
여기 우리는 ...
기본 매핑 (/ **)과 일치하는 클라이언트 (OpenLayers)가 발행 한 WFS 요청이 정의 된 필터를 거치지 않습니다. 디버깅하는 동안 Spring Context에 정의 된 필터 체인에는 내 정의가 포함되지 않지만 익명, 다이제스트 또는 기본을 사용하여 항상 고전적인 것을 포함한다는 것이 발견되었습니다 ...
질문
그래서 내가 해야하는 방법에 대한 더 완벽한 문서로 나를 지적 할 수있는 사람이 있습니까?