จะวางเลเยอร์ GeoServer ไว้ข้างหลังการตรวจสอบสิทธิ์ได้อย่างไร


29

ฉันต้องการเผยแพร่เลเยอร์แผนที่โดยใช้ OpenLayers และ GeoServer แม้ว่าจะง่ายพอที่จะตั้งค่า แต่ฉันก็แพ้เล็กน้อยเมื่อพูดถึงความเป็นไปได้ในการตรวจสอบสิทธิ์ สิ่งที่ฉันต้องการคือการสร้างผู้ใช้ที่แตกต่างกันซึ่งจะเข้าสู่หน้าต่างแผนที่ของพวกเขาด้วยการลงชื่อเข้าใช้ด้วยชื่อผู้ใช้และรหัสผ่านของตัวเอง วิธีนี้สามารถทำได้อย่างปลอดภัยเพื่อให้ผู้ใช้ของฉันไม่สามารถเข้าถึงเลเยอร์ของกันและกันได้

ฉันเข้าใจว่ามันเป็นเรื่องง่ายมากที่จะ "แฮ็ค" การตั้งค่าโดยทำแบบสอบถามกับ GeoServer ที่หนึ่งก็ขอให้รายการชั้นที่มีอยู่ทั้งหมด

ตัวเลือกของฉันคืออะไร? ฉันคิดว่า apache สามารถช่วยได้เมื่อตั้งค่าในเซิร์ฟเวอร์ ubuntu ของฉัน บทเรียนใด ๆ ในเรื่องนี้?

คำตอบ:


20

ก่อนอื่นฉันคิดว่าคุณควรอ่านเอกสาร Geoserver เกี่ยวกับความปลอดภัย http://docs.geoserver.org/stable/en/user/security/index.htmlคุณจะค้นพบว่าเป็นไปได้ที่จะทำให้เลเยอร์เข้าถึงได้ / ไม่สามารถเข้าถึงผู้ใช้หรือบทบาทที่แตกต่างกัน

อีกวิธีที่เป็นไปได้คือทำให้ geoserver ไม่สามารถเข้าถึงได้จากโลกภายนอก (ปิดพอร์ต 8080 บนเซิร์ฟเวอร์ของคุณสำหรับ IP อื่น ๆ จากนั้นโฮสต์ท้องถิ่น) จากนั้นสร้างกลไกการพิสูจน์ตัวตนด้วยตัวคุณเองในภาษาโปรแกรมเว็บที่คุณต้องการ

ตัวอย่างเช่น: คุณสามารถตั้งค่าการเข้าสู่ระบบ / การรับรองความถูกต้องบางส่วนใน php ที่ส่งต่อการร้องขอไปยัง geoserver บน localhost เมื่อตรวจสอบสิทธิ์แล้ว


นอกจากนี้: คุณสามารถมีตารางค้นหาที่มีการเชื่อมโยงระหว่างผู้ใช้แอปพลิเคชันของคุณกับผู้ใช้ / บทบาท / เลเยอร์ GeoServer และใช้การรักษาความปลอดภัยระดับเลเยอร์ใน GeoServer ดังนั้นเมื่อพร็อกซีของ OpenLayer ร้องขอเลเยอร์มันจะค้นหาข้อมูลรับรอง Geoserver ที่สอดคล้องกันตรวจสอบสิทธิ์พวกเขาและส่งคืนเลเยอร์ที่เขาสามารถเข้าถึงได้ วิธีนี้ผู้ใช้สามารถลองขอเลเยอร์อื่น ๆ ที่เขาต้องการ แต่จะไม่ได้รับเว้นแต่เขาจะสามารถเข้าถึงได้
CaptDragon

9

คุณสามารถดูGeoPrisma

เราจำเป็นต้องสร้างแอปพลิเคชันการแมปเว็บด้วยความปลอดภัยบนชุดข้อมูลที่สมเหตุสมผล สิ่งนี้สามารถเกิดขึ้นได้กับหลายแอปพลิเคชันและโดยการเข้าสู่ระบบ + รหัสผ่านมาตรฐานเพื่อเข้าถึงพวกเขา แต่โครงการมีขนาดใหญ่เกินไปและมันจะซับซ้อนมากในการรักษา ตัวอย่างเช่นการเพิ่มชุดข้อมูลใหม่จะต้องมีการปรับเปลี่ยนของแต่ละแอปพลิเคชันด้วยตนเองการปรับการรักษาความปลอดภัย ฯลฯ

นั่นเป็นเหตุผลที่เราตัดสินใจพัฒนาแอปพลิเคชั่นการแมปเว็บของเราเองซึ่งรวมถึงการควบคุมการเข้าถึงบนชุดข้อมูลโดยใช้แอพพลิเคชั่นการแมปบนเว็บ OpenSource

http://geoprisma.org/dist/build/html/introduction/index.html

ฉันต้องการสแกนเอกสาร - มันอาจเกินความสามารถที่จะเพิ่มสิ่งนี้ลงในโครงการง่าย ๆ ถ้าคุณมีเลเยอร์ / ผู้ใช้ไม่กี่คนในระบบของคุณ หากคุณมีผู้ใช้ 100 คน / กลุ่มที่มีสิทธิ์แก้ไขในชุดข้อมูลที่แตกต่างกันดังนั้นคุณควรใช้โครงการที่มีอยู่เช่น GeoPrisma

มิฉะนั้นความปลอดภัยเว็บเซิร์ฟเวอร์มาตรฐานที่สร้างขึ้นรอบ ๆ HTTP น่าจะเพียงพอแล้ว


GeoPrisma สามารถใช้กับ GeoServer ได้หรือไม่? พวกเขามีประวัติที่พิสูจน์แล้วหรือไม่?
Mimo

มันสามารถใช้กับเซิร์ฟเวอร์ WMS ใด ๆ รวมถึง GeoServer ความคิดเห็นที่เพิ่มไว้ข้างต้น
geographika

0

โปรดแก้ไขข้อผิดพลาดนี้

$ type = $ _ GET [ 'รูปแบบ'];

เมื่อคุณส่งค่า FORMAT เป็นพารามิเตอร์ของ URL คุณจะได้รับแผนที่ (ภาพ) จากเซิร์ฟเวอร์หากคุณได้รับแล้วพร็อกซีของคุณควรทำงานได้ดี


0

วิธีการหนึ่งที่จะใช้พร็อกซีเช่นนี้ที่สามารถตรวจสอบข้อมูลรับรองผู้ใช้ในขณะที่เข้าสู่ระบบโดยใช้ตัวแปรเซสชันและอนุญาตให้พวกเขาเข้าถึงทรัพยากรที่พวกเขามีสิทธิ์เท่านั้นเช่น: ตรวจสอบ URL สำหรับเลเยอร์ที่ถูกเรียกและปฏิเสธการเข้าถึงหาก ผู้ใช้ไม่ได้รับอนุญาตให้ดู

ในแง่ของข้อมูลที่พวกเขาอาจเห็นถ้าเป็นส่วนย่อยของชุดข้อมูลที่ใหญ่กว่านี่เป็นเรื่องที่ซับซ้อนกว่าเล็กน้อย แต่ฉันเห็นสองแนวทาง ..

  1. ใช้ พารามิเตอร์มุมมอง SQLเพื่อควบคุมข้อมูลที่ผู้ใช้จะเห็น คุณสามารถใช้พร็อกซีเพื่อเปลี่ยน URL ก่อนที่มันจะถูกส่งไปยัง Geoserver ด้วยพารามิเตอร์เฉพาะสำหรับผู้ใช้นั้น คุณยังสามารถส่งพารามิเตอร์กลับไปที่ Openlayers ผ่านการโทร Ajax หลังจากผู้ใช้ผ่านการรับรองความถูกต้องและระบุพารามิเตอร์เป็นส่วนหนึ่งของการโทร WMS getMAP ใน OpenLayers ข้อมูลจริงที่แสดงสามารถจัดการได้โดยการแทนที่ตัวแปรใน SLDเพื่อกรองข้อมูลที่แสดงหรือโดยใช้ลักษณะภายนอกในการเรียก WMS getMap ของคุณเพื่อเปลี่ยน SLD ที่ผู้ใช้ใช้เพื่อแสดงเลเยอร์ที่กำหนด

  2. ใช้ Ajax Call หลังจากการตรวจสอบความถูกต้องของผู้ใช้เพื่อระบุMap Extentsเพื่ออนุญาตให้ผู้ใช้มีอิทธิพลในพื้นที่ที่ระบุเท่านั้น คุณสามารถใช้ layerVisibility () เพื่อ จำกัด ข้อมูลที่จะแสดงเช่นกัน


0
  1. ขั้นแรกให้สร้าง URL พร็อกซี (ในภาษาการเขียนโปรแกรมของคุณ)
  2. URL พร็อกซีนี้จะไปยังเซิร์ฟเวอร์ทางภูมิศาสตร์
  3. ใน URL พร็อกซีนี้คุณสามารถทำการตรวจสอบกับผู้ใช้ & ผู้อ้างอิงหน้า คุณสามารถตรวจสอบว่ามีการอ้างอิง URL จาก webApp ของคุณหรือไม่ หากไม่เพียงส่งส่วนหัวที่ไม่ได้รับอนุญาต
  4. คุณจะกด URL พร็อกซีนี้แทน URL ภูมิศาสตร์ของคุณ
  5. ไม่มีใครจะสามารถรู้ได้ว่าอะไรคือ URL ที่แน่นอนของ Geoserver & เขาจะไม่สามารถแฮ็กมันได้
  6. เพื่อความปลอดภัยกับผู้ใช้เพียงเพิ่มการตรวจสอบผู้ใช้ใน URL พร็อกซี
  7. จาก Open Layers ผ่าน wms-url เป็น: http://domainname.com//proxyUrl.php?user=userid
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.