أكثر

OpenLayers - الوصول إلى طبقات GeoServer مع مصادقة PHP


أقوم بتعطيل جميع الطلبات المجهولة (WMS / WFS / ...) إلى GeoServer الخاص بي ، لكن لا يمكنني الآن الوصول إلى أي طبقة من تطبيق OpenLayers الخاص بي.

أريد أن أعرف ما إذا كان من الممكن المصادقة على GeoServer الخاص بي عبر PHP أو JavaScript قبل أي طلب OpenLayers.

إذا كانت الإجابة بنعم ، فما هو الخيار الأفضل؟ عبر PHP cURL أو JavaScript أو الوكيل (http://docs.geoserver.org/stable/en/user/security/tutorials/httpheaderproxy/index.html)


نحن لا نستخدم مصادقة GeoServer ، لكننا نستخدم إصدار ASP من هذا البرنامج الوكيل الذي كتبناه لأنفسنا مع بعض التعديلات.

يتعامل البرنامج النصي الخاص بنا مع المصادقة عبر Hashtag قمنا بتضمينه في WMS Client Calls.

يتم تعيين HashTag في قاعدة بيانات عند تسجيل دخول المستخدم على مستوى التطبيق وإزالتها في LogOut أو Timeout. يتم إرسالها إلى العميل عبر Ajax في وقت تسجيل دخول العميل أيضًا.

يتم استخدام Hashtag مرة واحدة فقط ولا يتم تكراره مرة أخرى لمدة x عدد الأيام. (نستخدم سنة واحدة)

نستخدم تنسيق url على النحو التالي (asp)

http://maps4.markware.net/؟ "& HashTag &": -: "& LAYERS =

واستخراج التجزئة بين ملف?و ال:-:في البرنامج النصي للوكيل ، تحقق من صلاحية العلامة ثم أعد إنشاء السلسلة إلى عنوان url صالح جديد يشير إلى مثيل Geoserver.

بالطبع ، عليك التعامل مع المنشورات المرتجعة من Geoserver وإعادة توجيهها إلى العميل ، البرنامج النصي الذي ذكرته يعالج ذلك.

إذا كان Geoserver Instance الخاص بك خلف الوكيل ولا يمكن الوصول إليه إلا عبر شبكة محلية محلية ، فهذا كل ما تحتاجه ، إنه آمن. إذا لم يكن الأمر كذلك ، فأنت بحاجة إلى إعداد قاعدة جدار الحماية على جهاز Geoserver الذي يسمح فقط بالمنفذ 8080 من عنوان IP الوكيل الخاص بك.

بهذه الطريقة ، لا يتعين علينا تتبع المضيفين ونتعامل مع المصادقة على مستوى التطبيق. علامة غير صالحة أو بدون علامة تجزئة ، لا توجد مربعات.

قمنا لاحقًا بتحسين البرنامج النصي الخاص بنا لتحميل الرصيد عبر مثيلات GeoServer المتعددة وإعادة توجيه بعض الطلبات إلى GeoWebCache وبعضها إلى GeoServer وفقًا لمتطلبات التطبيق. إنه يمنحك قدرًا كبيرًا من التحكم في الإعداد الخاص بك!


شاهد الفيديو: OpenLayers Introduction for Beginners (شهر اكتوبر 2021).