ปกป้อง WMS จากการเข้าถึงโดยไม่ได้รับอนุญาตหรือไม่


21

ในโครงการลูกค้าต้องการให้ภาพของ WMS ปลอดภัยจากการเข้าถึงโดยไม่ได้รับอนุญาต

อะไรคือวิธีแก้ไขปัญหาทั่วไปที่จะตระหนักได้ว่ามีอะไรบ้าง

พวกเขาเข้ากันได้กับมาตรฐาน OGC หรือไม่

คำตอบ:


17

ข้อมูลจำเพาะ OGC สั่งการใช้ http เท่านั้น ถ้ามันเป็นไปตาม http มันควรจะโอเค

บางวิธีที่เป็นไปได้:

  • HTTP Basic Authentication (รหัสผ่านที่ส่งเป็นข้อความธรรมดาอาจมีการสนับสนุนลูกค้าที่ จำกัด )
  • HTTP Digest Authentication (ปลอดภัยยิ่งขึ้นอาจมีการสนับสนุนลูกค้าที่ จำกัด )
  • กรองที่อยู่ IP ของลูกค้า (ใช้งานง่าย แต่ไม่ปลอดภัยโดยเฉพาะ)
  • URL ลับ ใช้GUIDเพื่อสร้าง URL ที่ไม่สามารถคาดเดาได้ สมมติว่าลูกค้าจะเก็บ URL เป็นความลับ ผู้ใช้ใช้งานง่ายกว่าการป้อนรหัสผ่าน การสนับสนุนลูกค้าที่รับประกัน

11

โพสต์ OGCนี้จากปี 2005 พูดว่า:

ไม่มีแง่มุมความปลอดภัยเฉพาะที่เป็นส่วนหนึ่งของข้อมูลจำเพาะอินเทอร์เฟซ OGC WMS / WFS / WCS ความปลอดภัยและการรับรองความถูกต้องจะถูกจัดการที่เลเยอร์อื่นในสแตกการประมวลผลแทน


4

หากความปลอดภัยผ่านความสับสนนั้นเพียงพอสำหรับวัตถุประสงค์ของคุณคุณอาจกำหนดค่าส่วนขยายเท็จสำหรับเลเยอร์:

เพียงใช้พิกัดทางด้านอื่น ๆ ของโลก เลเยอร์จะยังคงปรากฏในรายการเลเยอร์คำขอจะยังคงเป็นไปได้ แต่ถ้าผู้ใช้เลือกมันในซอฟต์แวร์ GIS และเลือก "ซูมไปยังเลเยอร์" เขาจะไม่เห็นอะไรเลยและอาจคิดว่าเลเยอร์นี้ว่างเปล่าหรือไม่ งาน. แอปพลิเคชันที่ทราบว่าการขยายเลเยอร์ที่ถูกต้องควรจะสามารถเข้าถึงได้

ฉันได้เห็นวิธีแก้ไขปัญหานี้แล้วนำไปใช้กับเว็บไซต์ WMS บางแห่ง แต่อาจไม่สอดคล้องกับมาตรฐาน OGC อย่างสมบูรณ์เนื่องจากเซิร์ฟเวอร์ส่งคืนส่วนขยายที่ไม่ถูกต้อง


3

คุณสามารถกำหนดให้ผู้ใช้เชื่อมต่อกับ WMS ผ่าน HTTP ที่ปลอดภัยโดย VPN มันทำให้ชั้นความปลอดภัยในระดับของเครือข่าย IP แต่เพิ่มความซับซ้อนอย่างแน่นอน



2

สมมติว่าคุณมีสิ่งต่อไปนี้:

คุณสามารถสร้างapi_keysตารางด้วยaccess_tokenและexpires_atคอลัมน์ &api_key=my_unique_keyจากนั้นเพิ่มพารามิเตอร์ทางการ QueryString Mapfile ของคุณสำหรับ tileindex ( ดูตัวอย่าง ) จะถูกกำหนดค่าบางอย่างดังนี้:

DATA "geom FROM (
  SELECT
   my_table.geom,
   my_table.gid,
  api_keys.access_token
  FROM my_table
  CROSS JOIN api_keys
  WHERE ST_Intersects(geom, !BOX!) and api_keys.expires_at > now()
) AS subquery USING UNIQUE gid USING SRID=4326"
FILTER "access_token = '%api_key%'
VALIDATION
  'api_key' '^[a-zA-Z0-9\_\-]{33}$'
  'default_api_key' ''
END

แนวคิดคือแอปพลิเคชันแยกต่างหากของคุณซึ่งรับรองความถูกต้องผู้ใช้กับฐานข้อมูลจะอัปเดตapi_keysตารางตั้งค่าaccess_tokenแฮช md5 และexpires_atอัปเดตคอลัมน์ให้ทันสมัยในอนาคต

อีกวิธีหนึ่งคุณสามารถใช้ทราฟฟิกพร็อกซีไปยังเฟรมเวิร์กแยกต่างหากซึ่งจัดการการตรวจสอบความถูกต้อง WMS / OWS และผู้ใช้ที่ได้รับอนุญาตจากพร็อกซี่ไปยัง Mapserver ภายใน นี่คือรายการที่ได้จากการโพสต์ไปยังรายชื่อผู้รับจดหมายของ mapserverซึ่งเป็นรายการขยาย / สรุปของสิ่งที่ผู้อื่นตอบคำถามนี้

ถ้าคุณเคยตัดสินใจที่จะใช้ Geoserver ดูที่เป็นโมดูล AuthKey


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.