บริบท
ในโครงการปัจจุบันของฉันฉันมีข้อกำหนดในการตรวจสอบว่าคำขอที่มาถึง GeoServer (2.3.0) ได้รับอนุญาต
โครงการถือข้อเท็จจริงเหล่านั้น:
- ลูกค้า GS ไม่สามารถให้ข้อมูลหลัก (เช่นรหัสผ่าน) GS เองไม่มีการเชื่อมต่อกับผู้ใช้ / บทบาท repo
ดังนั้นเราจึงใช้โอกาสในการใช้กลไกการตรวจสอบความถูกต้องเพื่อตรวจสอบว่า:
- คำขอที่ถูกต้อง (สำหรับเลเยอร์ WFS ที่เฉพาะเจาะจง) มีส่วนหัว HTTP พิเศษ (สมมติว่า X-CUSTOM-VALID)
- ส่วนหัวนี้เป็นข้อความที่เข้ารหัสของ JSON ซึ่งมีข้อมูลเพียงพอที่จะตรวจสอบความจริงที่ว่าคำขอนั้นเริ่มต้นโดยไคลเอนต์ที่เชื่อมต่อกับระบบที่สามที่ถูกต้อง (ชื่อผู้ใช้, ความลับ, ข้อมูลอื่น ๆ )
สถานะ
เอกสารจะบอกเราว่าเราควรจะสามารถที่จะทำเช่นนั้น ...
อย่างไรก็ตามเอกสารประกอบยังไม่ชัดเจนว่าจะสร้างองค์ประกอบดังกล่าวอย่างไรและควรกำหนดค่าอย่างไร
การดีบัก GeoServer ฉันจัดการเพื่อค้นหาว่าการกำหนดค่าตัวกรองดังกล่าวนั้นต้องการผู้ให้บริการการรับรองความถูกต้องเฉพาะ เพื่อให้มีพาเนลในส่วนติดต่อผู้ดูแลเว็บ (ภายใต้การรับรองความถูกต้องในรายการตัวกรองการตรวจสอบความถูกต้อง)
แผงหน้าปัด
ดังนั้นรหัสของฉันประกอบด้วยไฟล์เหล่านี้:
- ProducteurAuthFilterPanel.java
- ProducteurAuthFilterPanelInfo.java
- ProducteurAuthenticationFilterConfig.java
- ProducteurAuthenticationFilterPanel.html
สิ่งเหล่านี้จำเป็นต้องเพิ่มพาเนลใน Web Admin Interface ProducteurAuthFilterPanelInfo
กำลังกาวกันและกันพร้อมกับProducteurAuthenticationFilter
here-after ( ตัวกรอง ^^)
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>
ในตอนท้ายของเกมใน Web Admin Interface ฉันมีรายการใหม่ในแผงกรองและฉันใช้ในการแมปเริ่มต้น (ดูภาพด้านล่างสำหรับการอ้างอิง):
คำอธิบายปัญหา
ที่นี่เราอยู่ ...
ไม่มีคำขอ WFS ของฉันที่ออกโดยไคลเอนต์ (OpenLayers) ซึ่งกำลังจับคู่การแมปเริ่มต้น (/ **) กำลังผ่านตัวกรองที่กำหนด ในขณะที่การดีบั๊กฉันพบว่าโซ่ตัวกรองที่กำหนดไว้ใน Spring Context ไม่เคยมีคำจำกัดความของฉัน แต่จะรวมถึงการใช้แบบคลาสสิกโดยใช้แบบไม่ระบุชื่อแบบแยกย่อยหรือพื้นฐาน ...
คำถาม
ดังนั้นมีใครสามารถชี้ให้ฉันเห็นเอกสารที่สมบูรณ์มากขึ้น (^^) เกี่ยวกับวิธีที่ฉันต้องทำ?