2012-06-07 26 views
6

मैंने पच प्रमाणीकरण के बारे में सभी पदों को पढ़ा है और मैं कोशिश कर रहा हूं लेकिन मुझे कोई समस्या है, मेरे पास पाचन प्रमाणीकरण लागू करने के साथ एक रेस्टलेट है, और एक जावास्क्रिप्ट एपीआई के साथ मैं प्रमाणित करने की कोशिश कर रहा हूं।जावास्क्रिप्ट पचाने मैन्युअल प्रमाणीकरण

सबसे पहले, मैं सर्वर पर xmlhttprequest POST करता हूं (फ़ाइल से // // स्थानीयहोस्ट: 8111 इसलिए मेरे पास सीओआरएस समस्या है लेकिन हल हो गई है), ठीक है, 401 के साथ सर्वर प्रतिक्रिया और WWW- प्रमाणीकरण शीर्षलेख के साथ इस के साथ:

WWW-Authenticate:Digest realm="Guard", domain="/",  nonce="MTMzOTA5Mjk1NTE2NDo0NzY2NjJiOTgyMjE1ZDc0OWU3NzM5MTkzMWNjNGQzNw==", algorithm=MD5, qop="auth" 

तो मैं इस शीर्ष लेख लेने के लिए और प्रमाणीकरण पचाने एल्गोरिथ्म लागू होते हैं: पहले 2 वार्स, "cnonce" और "nc" बनाएं:

tokensObj["cnonce"] = 'bd5fd9b093dccaa1'; (invented) 
tokensObj["nc"] = '00000001'; 

मैं अपने शाब्दिक वस्तु में बना 'यूरी' पैरामीटर (सर्वर प्रतिक्रिया में एक "करते हैं मुख्य ":?) मैं 'डोमेन' का मान लेता हूं और अपनी ऑब्जेक्ट की 'uri' कुंजी डालता हूं।

के बाद, मैं एल्गोरिथ्म कार्य करें:

var HA1 = MD5("login:Guard:mypassword"); 
var HA2 = MD5("POST:/"); 
var authResponse = MD5(HA1 + ':' + 

     unquotes(tokensObj["nonce"]) + 
     ':' + 
     tokensObj["nc"] + 
     ':' + 
     tokensObj["cnonce"] + 
     ':' + 
        unquotes(tokensObj["qop"]) + 
     ':' + 
     HA2); 
var responseContentHeader = 'Digest username:"login"' +', realm=' + tokensObj["realm"] + 
          ', nonce=' + tokensObj["nonce"] + 
          ', uri=' + tokensObj["domain"] + 
       ', algorithm=' + tokensObj["algorithm"] + 
       ', response="' + authResponse + '"' + 
       ', qop=' + unquotes(tokensObj["qop"]) + 
       ', nc=' + tokensObj["nc"] + 
       ', cnonce="' + tokensObj["cnonce"] + '"'; 

और मैं setRequestHeader ("प्राधिकरण", responseContentHeader) करते हैं, तो, अंतिम हैडर कि सर्वर के लिए भेज रहा है:

Authorization:Digest username:"login", realm="Guard", nonce="7d0c753c2fb4cdc9480403547952f1", uri="/", algorithm=MD5, response="e9d8ad8f04e42672f2c21d70257c1072", qop=auth, nc=00000001, cnonce="bd5fd9b093dccaa1" 

लेकिन नहीं काम करता है, सर्वर 401 देता है, फिर सब CORS हेडर ठीक स्थापित कर रहे हैं, तो यह समस्या, सर्वर प्रमाणीकरण नहीं है पाचन का परीक्षण किया जाता है, क्रोम के साथ लॉगिन करें और हेडर प्राधिकरण जो इसे रखता है वह मेरा ही है (obviusly nonce अलग है)।

कोई ऐसा लगता है जो मैं जा रहा हूं? धन्यवाद

उत्तर

3

गलती थी:

Authorization:Digest username="login", realm="Guard", nonce="7d0c753c2fb4cdc9480403547952f1", uri="/", algorithm=MD5, response="e9d8ad8f04e42672f2c21d70257c1072", qop=auth, nc=00000001, cnonce="bd5fd9b093dccaa1"