2009-07-18 13 views
9

मुझे यहां एक समस्या का सामना करना पड़ रहा है, HttpListener के साथ।एचटीपी लिस्टनर: http उपयोगकर्ता और पासवर्ड कैसे प्राप्त करें?

जब प्रपत्र

http://user:[email protected]/ 

का एक अनुरोध किया जाता है, मैं उपयोगकर्ता और पासवर्ड कैसे मिल सकता है? HttpWebRequest की एक प्रमाण पत्र संपत्ति है, लेकिन HttpListenerRequest में यह नहीं है, और मुझे इसकी किसी भी संपत्ति में उपयोगकर्ता नाम नहीं मिला।

सहायता के लिए धन्यवाद।

उत्तर

21

जो आप करने का प्रयास कर रहे हैं वह HTTP मूल लेख के माध्यम से पास प्रमाण-पत्र है, मुझे यकीन नहीं है कि उपयोगकर्ता नाम: पासवर्ड सिंटैक्स HttpListener में समर्थित है, लेकिन यदि ऐसा है, तो आपको यह निर्दिष्ट करना होगा कि आप मूल स्वीकार करते हैं पहले लेखक

HttpListenerBasicIdentity identity = (HttpListenerBasicIdentity)context.User.Identity; 
Console.WriteLine(identity.Name); 
Console.WriteLine(identity.Password); 

सभी समर्थित authenitcation तरीकों कि HttpListener साथ इस्तेमाल किया जा सकता का Here's a full explanation:

HttpListener listener = new HttpListener(); 
listener.Prefixes.Add(uriPrefix); 
listener.AuthenticationSchemes = AuthenticationSchemes.Basic; 
listener.Start(); 

एक बार जब आप का अनुरोध प्राप्त होता है तो आप यूज़रनेम और पासवर्ड निकाल सकते हैं।

+0

क्षमा करें, मैं ने कहा, "मैं अगर उपयोगकर्ता नाम नहीं: पासवर्ड सिंटैक्स HttpListener में समर्थित है ", लेकिन निश्चित रूप से यह क्लाइंट है जो इसे" डब्ल्यूडब्ल्यूडब्ल्यू-प्रमाणीकरण: मूल "शीर्षलेख में परिवर्तित करेगा, इसलिए यह केवल तभी मायने रखता है जब क्लाइंट इसका समर्थन करता है। मेरा मानना ​​है कि इसके लिए समर्थन हाल ही में आईई से गिरा दिया गया है। –

4

Authorization शीर्षलेख प्राप्त करें।

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== 

यूज़रनेम और पासवर्ड (इस उदाहरण में Aladdin:open sesame) पेट से अलग की गई है, तो B64 एन्कोड: यह प्रारूप के रूप में इस प्रकार है

Authorization: <Type> <Base64-encoded-Username/Password-Pair> 

उदाहरण है।

2

आप पहले मूल प्रमाणीकरण सक्षम करना होगा:

listener.AuthenticationSchemes = AuthenticationSchemes.Basic; 

फिर अपने ProcessRequest विधि में आप यूज़रनेम और पासवर्ड मिल सकता है:

if (context.User.Identity.IsAuthenticated) 
{ 
    var identity = (HttpListenerBasicIdentity)context.User.Identity; 
    Console.WriteLine(identity.Name); 
    Console.WriteLine(identity.Password); 
} 
संबंधित मुद्दे