ওপেনলায়ার্স 2.12 এবং HTTP বেসিক প্রমাণীকরণের সমস্যা রয়েছে


13

আমি কোনও সার্ভার থেকে ডাব্লুএমএস স্তর প্রদর্শন করতে ওপেনলায়ার্স 2.12 ব্যবহার করার চেষ্টা করছি যা HTTP বেসিক প্রমাণীকরণ সক্ষম করেছে।

আমি আমার জাভাস্ক্রিপ্ট কোডটিতে ইউআরএল প্যারামিটারে ব্যবহারকারীর নাম এবং পাসওয়ার্ড রেখে প্রমাণীকরণটি হ্যান্ডেল করার চেষ্টা করেছি। স্তর তৈরি উদাহরণ:

myLayer = new OpenLayers.Layer.WMS('background',
        'https://username:password@ws.nls.fi/rasteriaineistot/image?',
        {
            layers: 'background',
            bbox: '-380188,6249943,1347312,8226943'
        },                                   
        {
            displayInLayerSwitcher: true,
            isBaseLayer: false,
            projection: 'EPSG:3067',
            visibility: true
        });

অবশ্যই এটি নিরাপদ নয় যেহেতু শংসাপত্রগুলি জাভাস্ক্রিপ্ট কোডে সঞ্চিত আছে এবং সমস্ত ব্রাউজারে কাজ করে না। ইন্টারনেট এক্সপ্লোরার 8 সুরক্ষিত ত্রুটিটি ওপেনলায়ার্স.জেসকে নির্দেশ করে এবং মানচিত্রটি প্রদর্শন করতে অস্বীকার করে। ফায়ারফক্স 13 কিছু প্রমাণীকরণ ডায়ালগ পপ আপ করে যা আমি বাতিল করতে পারি (মানচিত্রটি তার পরে সঠিকভাবে প্রদর্শিত হয়)। ক্রোম 23 এ প্রমাণীকরণটি নির্দ্বিধায় কাজ করছে বলে মনে হচ্ছে।

আপনি কি নিশ্চিত করতে পারেন যে ইউআরএলটিতে এনকোড করে এবং উদাহরণের মতো ওপেনলায়ারদের দিয়ে এইচটিটিপি বেসিক প্রমাণীকরণটি ক্রস ব্রাউজার পদ্ধতিতে পরিচালনা করা সম্ভব নয়?

আপনি HTTP বেসিক প্রমাণীকরণ হ্যান্ডেল করার বিকল্প উপায়গুলির পরামর্শ দিতে পারেন যাতে এটি স্বচ্ছভাবে ব্যবহারকারীর সাথে কাজ করে (কোনও প্রমাণীকরণ পপআপ প্রদর্শিত হয় না)? এটি ঘিরে কাজ করার জন্য সম্ভবত কিছু প্রক্সি সার্ভার ব্যবহার করুন।


2
আপনি একটি প্রক্সি ব্যবহার করতে পারেন - docs.openlayers.org/library/request.html প্রক্সি উদাহরণ> collab.itc.virginia.edu/wiki/toolbox/…
ম্যাপারজ

যতদূর আমি জানি, ওপেনলায়ারসে প্রমাণীকরণ হ্যান্ডেল করার একমাত্র উপায় হ'ল ওপেনলায়ার্স.রেকুয়েস্ট.সুই () ( goo.gl/OKtGj ) ফাংশনটি ব্যবহার করা যা আপনার প্রয়োজন অনুসারে নয়।
দরিয়াপড়া

ইলুওয়াতার> ফায়ারফক্স কোনও লগইন প্রমাণীকরণ দেখায় এমন সমস্যাটি কি আপনি কখনও পেরিয়ে গেছেন? আপনি যেমন লিখছেন, আপনি কেবল পপআপে বাতিল টিপতে পারেন, তবে এটি প্রমাণীকরণের পপআপ সহ শেষ ব্যবহারকারীর জন্য বিরক্তিকর এবং বিভ্রান্তিকর।
মাইক 1001

উত্তর:


7

আমরা যে সমাধানটি শেষ করেছিলাম তা হ'ল ওপেনলায়ার্স ক্লায়েন্ট এবং ব্যাকএন্ড ডাব্লুএমএস পরিষেবার মধ্যে একটি প্রমাণীকরণকারী প্রক্সি সার্ভার যুক্ত করা। সুতরাং ডাব্লুএমএস পরিষেবায় সরাসরি সংযুক্ত হওয়ার পরিবর্তে ওপেনলায়ার্স ক্লায়েন্টটি একটি প্রক্সি সার্ভারের সাথে সংযোগ স্থাপন করে যা অনুরোধগুলিতে প্রয়োজনীয় প্রমাণীকরণ শিরোনাম যুক্ত করে।

স্তর তৈরির জন্য উদাহরণ কোড:

var layer = new OpenLayers.Layer.WMS( "background", "http://myproxyaddress.com/23ergwe435dw3463", {layers: 'basic'} );

অ্যাপাচি প্রক্সি কনফিগারেশন উদাহরণ:

ProxyRequests     Off
ProxyPreserveHost On
SSLProxyEngine On
<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>
SetEnvIf Request_URI "23ergwe435dw3463" wms_provider_name
RequestHeader set Authorization: "Basic Xk12BLdVNzUo5UGl0po5Y" env=wms_provider_name
ProxyPass         /23ergwe435dw3463  https://wmsprovideraddress.com
ProxyPassReverse  /23ergwe435dw3463  https://wmsprovideraddress.com

আপনার কাছে এই স্টাইলটি ব্যবহার করে একাধিক প্রক্সি কনফিগারেশন থাকতে পারে।

অনুমোদনের উদ্ধৃতিগুলির মধ্যে আপনার যা রাখা উচিত তা হ'ল স্ট্রিংয়ের "ইউজার নেম: পাসওয়ার্ড" এর মূল -৪৪ এনকোডিং (উদ্ধৃতি ব্যতীত)। আরও তথ্যের জন্য এই লিঙ্কটি দেখুন: /programming/567814/apache2-revers-proxy-to-an-end-Point-that-requires-basicauth-but-want-to-hide-t


5

আপনি মানচিত্রে স্তরটি যুক্ত করার আগে একটি জাল এজাক্স অনুরোধ পাঠাতে পারেন। ব্রাউজারটি আপনার জন্য প্রাথমিক প্রমাণীকরণটি পরিচালনা করবে:

// Assuming myLayer **WITHOUT** user:pass in the url
$.ajax({
    url: myLayer.url,
    data: myLayer.params,
    method: 'GET',
    error: function(jqXHR, textStatus, errorThrown){
        // Handle not authoruzed here
    },
    success: function(){
        // Yuppieeeeee!
        map.addLayer(myLayer);    // The browser wil set up the 
                                  // authentication in the request for you
    }

});

এটি কেবল তখনই কাজ করবে যখন সার্ভার 401 - প্রমানের প্রয়োজনীয় শিরোনাম প্রদান করে (জিওসভারে আপনাকে সুরক্ষা নীতি চ্যালেঞ্জ বা মিশ্রিত করতে হবে)


এজ্যাক্স কল আইডি jQuery ব্যবহার করে সম্পন্ন হয়েছে ...
টমমসো

আমি ঠিক এটি স্থাপন করা প্রয়োজন যেখানে জানতে চাই। আমার প্রকল্পে আমি জিওএক্সটেক্স 2, এক্সট্রিজএস 4.2 এবং ওপেনলায়ারস 2.12 ব্যবহার করছি।
g07kore

আমি মনে করি এটি আমার ক্ষেত্রে কাজ করতে পারে। তবে কীভাবে আমি একটি জাল অনুরোধ পাঠাতে পারি তার কোনও পরামর্শ আছে? এটিএম আমি লগইন পপআপটি ট্রিগার করতে অনুরোধটির লিঙ্কটি সহ একটি href ব্যবহার করি তবে আমি লিঙ্কটিতে নেভিগেট করতে চাই না।
ভূগর্ভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.