2011-01-06 16 views
7

jQuery के साथ मैं Version One Rest API बोल रहा हूँ और HTTP शीर्ष लेख में उपयोगकर्ता को प्रमाणित करने की जरूरत है।jQuery HTTP प्रमाणीकरण

मैं

$.ajax({ 
     dataType: "jsonp", 
     beforeSend: function(xhr){ 
      xhr.setRequestHeader("Authorization", "Basic xyz"); // xyz usr:pwd Base64 encoded 
     }, 
     url: "https://www10.v1host.com/.../VersionOne/rest-1.v1/...", 
     success: function(data, status, xhr) { 
      alert("Load was performed."); 
     } 
    }); 

और

$.ajax({ 
    dataType: "jsonp", 
    username:"usr", 
    password:"pwd", 
    url: "https://www10.v1host.com/.../VersionOne/rest-1.v1/...", 
    success: function(data, status, xhr) { 
     alert("Load was performed."); 
    } 
}); 

की कोशिश की लेकिन मैं हमेशा अपने क्रेडेंशियल्स (मैं क्रोम का उपयोग करें) के लिए पूछ पॉप अप मिलता है। यहां तक ​​कि जब मैं पॉप अप में क्रेडेंशियल्स टाइप करता हूं, तब भी मुझे प्रमाणीकृत नहीं किया जाता है और खिड़की दिखती रहती है।

  1. HTTP शीर्षलेख में jQuery के साथ उपयोगकर्ता को प्रमाणीकृत कैसे करें?
  2. वहाँ किसी भी तरह से कैसे कर सकता हूँ पासवर्ड विशेषता अदृश्य एन्क्रिप्टेड है? या बेस 64 एकमात्र तरीका है। मैं केवल एक खाते के माध्यम से सर्वर तक पहुंचना चाहता हूं लेकिन क्लाइंट पक्ष पर उपयोगकर्ताओं को पासवर्ड देखने के लिए नहीं चाहता (या इसे जावास्क्रिप्ट में ढूंढें)।
+0

"मैं केवल एक खाते के माध्यम से सर्वर तक पहुंचना चाहता हूं लेकिन क्लाइंट पक्ष पर उपयोगकर्ताओं को पासवर्ड देखने के लिए नहीं चाहता" - यह इस विधि के साथ असंभव होने जा रहा है जब तक आप सर्वर की ओर से पासवर्ड नहीं लेते (जो एक बुरा लगता है अभ्यास)। बेस 64 एन्कोडिंग पासवर्ड को अदृश्य बनाने का कोई तरीका नहीं है, यह बचाना आसान है। –

+0

धन्यवाद। मुझे डर था कि यह असंभव है। बेस 64 के बारे में यह सही है, सहमत हैं। – padis

उत्तर

4

यह सिर्फ एक छोटा सा अजीब बिल्कुल असंभव नहीं है,। आप अपने स्वयं के सर्वर के माध्यम से सभी AJAX को प्रॉक्सी कर सकते हैं:

  • आपकी जावास्क्रिप्ट AJAX के माध्यम से आपके सर्वर से संपर्क करती है।
  • आपका सर्वर उपयुक्त मूल लेख शीर्षकों (या जो भी प्रमाणीकरण आपको उपयोग करने की आवश्यकता है) के साथ https://www10.v1host.com/.../VersionOne/rest-1.v1/... पर अनुरोध सेट करता है।
  • आपके सर्वर अपनी स्क्रिप्ट के लिए वापस प्रतिक्रिया भेजता है www10.v1host.com अपने सर्वर पर भेजा बिल्कुल के रूप में।

इस तरह पासवर्ड सर्वर पर अदृश्य रहता है और सर्वर पर आपके नियंत्रण में रहता है और क्लाइंट कोड उसी API को प्राप्त करता है जैसा यह www10.v1host.com से होगा। इस दृष्टिकोण के साथ कुछ अंतराल शुरू हो सकता है लेकिन यह प्रबंधनीय होना चाहिए।

बेशक, आपको अभी भी ब्राउज़र और अपने सर्वर के बीच प्राधिकरण प्रक्रिया पर विचार करना होगा, लेकिन आपको उस प्राधिकरण का उपयोग करने में सक्षम होना चाहिए जो आपके पास पहले से है (शायद कुकीज़ और सादे पुराने लॉग इन)।

तुम भी सुनिश्चित करें कि आप अच्छा खेल रहे हैं बनाने के लिए सेवा की API नियमों के खिलाफ इस तकनीक की जांच करना चाहते हैं।

+0

धन्यवाद, यह एक अच्छा विचार है। मैं वास्तव में मूल रूप से जावा के माध्यम से जावा के माध्यम से उस आरईएसटी एपीआई को कॉल करना चाहता था लेकिन सर्वर उस मशीन पर चलता है जो बाहरी नेटवर्क तक नहीं जा सकता है। क्लाइंट मशीनों को बाहर जाने की अनुमति है। – padis

संबंधित मुद्दे