2009-06-04 16 views
34

मैं कंसोल एप्लिकेशन से एक webservice का आह्वान करने की कोशिश कर रहा हूं, और मुझे क्लाइंट को System.Net.NetworkCredential ऑब्जेक्ट प्रदान करने की आवश्यकता है।
क्या उपयोगकर्ता के लिए NetworkCredential ऑब्जेक्ट बनाना संभव है जिसने उपयोगकर्ता नाम/पासवर्ड के लिए आवेदन किए बिना एप्लिकेशन शुरू किया?वर्तमान उपयोगकर्ता के लिए नेटवर्क क्रेडेंशियल प्राप्त करना (सी #)

उत्तर

43

यदि वेब सेवा का उपयोग किया जा रहा है, तो विंडोज 0 एकीकृत सुरक्षा का उपयोग करता है, वर्तमान WindowsIdentity से NetworkCredential बनाने के लिए वेब सेवा को मौजूदा उपयोगकर्ता विंडोज लॉगिन का उपयोग करने की अनुमति देने के लिए पर्याप्त होना चाहिए। हालांकि, यदि वेब सेवा एक अलग सुरक्षा मॉडल का उपयोग करती है, तो मौजूदा पहचान से उपयोगकर्ता पासवर्ड निकालने का कोई तरीका नहीं है ... कि आपके और डेवलपर को आपके उपयोगकर्ताओं के पासवर्ड चुराए जाने की इजाजत देकर, असुरक्षित होगा । आपको अपने उपयोगकर्ता को अपना पासवर्ड प्रदान करने के लिए कुछ रास्ता प्रदान करने की आवश्यकता होगी, और इसे कुछ सुरक्षित कैश में रखें यदि आप नहीं चाहते कि उन्हें बार-बार इसे प्रदान करना पड़े।

संपादित करें: वर्तमान पहचान के लिए क्रेडेंशियल्स प्राप्त करने के लिए निम्न का उपयोग करें:

Uri uri = new Uri("http://tempuri.org/"); 
ICredentials credentials = CredentialCache.DefaultCredentials; 
NetworkCredential credential = credentials.GetCredential(uri, "Basic"); 
+0

आप WindowsIdentity से NetworkCredential कैसे बना सकते हैं? –

+12

धन्यवाद! मैंने अभी CredentialCache.DefaultNetworkCredentials का उपयोग किया है। –

+1

क्या GetCredential विधि Windows XP/2003/Vista/2008 में संग्रहीत उपयोगकर्ता नामों और पासवर्ड से प्रमाण-पत्र लौटाता है? मैंने यहां एक संबंधित प्रश्न पूछा: http://stackoverflow.com/questions/994232/how-to-call-a-web-service-using-stored-credentials यदि GetCredential को यूरी के आधार पर स्टोर से प्रमाण-पत्र पुनर्प्राप्त करता है & प्रमाणीकरण प्रकार, मेरा जवाब होगा। मैं इसका परीक्षण करूंगा और वापस रिपोर्ट करूंगा ... –

4

आप उपयोगकर्ता नाम System.Security.Principal.WindowsIdentity.GetCurrent() का उपयोग कर प्राप्त कर सकते हैं लेकिन वर्तमान उपयोगकर्ता पासवर्ड प्राप्त करने का कोई तरीका नहीं है!

+7

मुझे आशा है कि वहाँ वर्तमान उपयोगकर्ता पासवर्ड प्राप्त करने की कोई रास्ता नहीं है कि है! :) मैं क्या करना चाहता हूं वेब सेवा के लिए डिफ़ॉल्ट के रूप में 'वर्तमान प्रमाण-पत्र' का उपयोग करना है। –

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