Bối cảnh
Trong dự án hiện tại của tôi, tôi đã yêu cầu xác thực rằng các yêu cầu đến GeoServer (2.3.0) được cho phép.
Dự án nắm giữ những sự thật:
- Máy khách GS không thể cung cấp thông tin chính (ví dụ mật khẩu), bản thân GS không có kết nối với repo người dùng / vai trò
Vì vậy, chúng tôi đã nhân cơ hội sử dụng cơ chế lọc auth để kiểm tra xem:
- một yêu cầu hợp lệ (đối với lớp WFS cụ thể) có chứa Tiêu đề HTTP đặc biệt (giả sử X-CUSTOM-VALID)
- Tiêu đề này là một thông điệp được mã hóa JSON chứa đủ thông tin để xác thực thực tế rằng yêu cầu được bắt đầu bởi một khách hàng được kết nối với hệ thống thứ ba hợp lệ (tên người dùng, bí mật, những thứ tương tự)
Trạng thái
Các tài liệu hướng dẫn cho chúng ta biết rằng chúng ta sẽ có thể làm như vậy ...
Tuy nhiên, tài liệu không rõ làm thế nào để tạo ra các thành phần như vậy và cách chúng nên được cấu hình.
Gỡ lỗi GeoServer Tôi quản lý để thấy rằng để định cấu hình bộ lọc như vậy, nó yêu cầu Nhà cung cấp xác thực chuyên dụng. Điều đó, để có một bảng điều khiển trong giao diện quản trị web (theo xác thực, trong danh sách Bộ lọc xác thực)
Bảng điều khiển
Do đó, mã của tôi bao gồm các tệp đó:
- ProducteurAuthFilterPanel.java
- ProducteurAuthFilterPanelInfo.java
- ProducteurAuthenticationFilterConfig.java
- ProducteurAuthenticationFilterPanel.html
Đây là những yêu cầu để thêm một bảng điều khiển trong Giao diện quản trị web. ProducteurAuthFilterPanelInfo
đang dán hai cái kia cùng với cái ProducteurAuthenticationFilter
sau này ( bộ lọc ^^).
Các ProducteurAuthenticationFilterConfig
tuyên bố rằng trong constructor của nó:
setClassName(ProducteurAnonymousAuthenticationProvider.class.getName());
setName("producteur");
Bộ lọc (và Nhà cung cấp)
Bây giờ, các lớp cần thiết để tạo bộ lọc được bao gồm trong chuỗi (tôi đoán):
- ProducteurAuthenticationFilter : triển khai
GeoServerSecurityFilter
và triển khai bộ lọcGeoServerAuthenticationFilter
- ProducteurAnonymousAuthenticationProvider: bằng cách nào đó được yêu cầu bởi Hội đồng (ở trên) để xác định bộ lọc mới
- ProducteurAuthenticationException: được sử dụng trong Xác thựcEntryPoint (hiện chỉ có http403ForbiddenEntryPoint)
Cuối cùng, các hạt được định nghĩa như vậy:
<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>
Vào cuối trò chơi, trong Giao diện quản trị web, tôi có một Mục mới trong bảng điều khiển bộ lọc và tôi đã sử dụng nó trong ánh xạ mặc định (xem hình ảnh bên dưới để tham khảo):
Mô tả vấn đề
Chúng ta ở đây ...
Không có yêu cầu WFS nào của tôi do khách hàng (OpenLayers) phù hợp với ánh xạ mặc định (/ **) đi qua Bộ lọc được xác định. Trong khi gỡ lỗi, tôi thấy rằng các chuỗi bộ lọc được xác định trong Bối cảnh mùa xuân không bao giờ bao gồm định nghĩa của tôi, mà luôn luôn bao gồm cả chuỗi cổ điển sử dụng ẩn danh, tiêu hóa hoặc cơ bản ...
Câu hỏi
Vì vậy, có ai có thể chỉ cho tôi một tài liệu đầy đủ hơn (nhiều ^^) về cách tôi phải làm điều đó không?