2012-10-12 19 views
7

मैं एक्सचेंज वेब सेवाओं के माध्यम से हमारे एक्सचेंज 2010 सर्वर से कनेक्ट करने के लिए एएसपी.NET (.NET 3.5) वेबसाइट बनाने का प्रयास कर रहा हूं, जब मैं उपयोगकर्ता नाम, पासवर्ड और डोमेन को परिभाषित करता हूं तो मैं ईडब्लूएस से कनेक्ट करने में सक्षम हूं के साथ प्रमाणित करें, लेकिन यदि संभव हो, तो मेरे कोड में लॉगिन विवरण शामिल नहीं करना चाहूंगा।एडी उपयोगकर्ता प्रमाणीकरण

आईआईएस में मैंने साइट के वेब.कॉन्फिग में साइट के लिए एकीकृत विंडोज प्रमाणीकरण सक्षम किया है, मेरे पास <authentication mode="Windows"/> है। इसके बाद के संस्करण कोड के साथ

svc.UseDefaultCredentials = True 
svc.Credentials = New WebCredentials() 
svc.Url = New Uri(svcURL) 

मैं संदेश प्राप्त हो रही हैं:

जब एक खाता है कि एक नहीं है के रूप में एक अनुरोध करने

निम्नलिखित कोड है कि मैं क्या साथ woking गया था है मेलबॉक्स, आप किसी भी विशिष्ट फ़ोल्डर आईडी के लिए मेलबॉक्स प्राथमिक SMTP पता निर्दिष्ट करना होगा।

जब मैं (svc.Credentials = New WebCredentials() के स्थान पर) svc.Credentials = CredentialCache.DefaultNetworkCredentials उपयोग करने के लिए मैं त्रुटि संदेश प्राप्त करने का प्रयास:

'System.Net.SystemNetworkCredential' प्रकार की वस्तु कास्ट करने में असमर्थ प्रकार 'Microsoft.Exchange को .WebServices.Data.ExchangeCredentials '। svc.Credentials = New WebCredentials("username","password","domain")

किसी EWS को प्रमाणित करने में सक्षम किया गया है:

के रूप में उल्लेख किया है, केवल एक चीज है कि काम किया है उपयोगकर्ता लॉगिन विवरण है, जो मैं नहीं बल्कि ऐसा नहीं करेंगे हार्डकोड द्वारा करने के लिए प्रमाणित करने के लिए उपयोगकर्ता क्रेडेंशियल परिभाषित करने के लिए है एक एएसपी.NET वेबसाइट में वर्तमान लॉग इन उपयोगकर्ता के प्रमाण पत्र का उपयोग कर?

+0

लीमा, जहां आप इस परिदृश्य के लिए समाधान ढूंढने में सक्षम हैं? –

उत्तर

2

डिफ़ॉल्ट रूप से किसी सर्वर (जिस सर्वर पर आप अपनी एएसपी.नेट साइट होस्ट कर रहे हैं) से उपयोगकर्ता के क्रेडेंशियल्स को दूसरे (आपके एक्सचेंज सर्वर) को प्रतिनिधि करना संभव नहीं है। इसे "सर्वर हॉप" के रूप में जाना जाता है और विंडोज डिफ़ॉल्ट रूप से सुरक्षा उपाय के रूप में इसे रोक देगा।

  1. करबरोस का उपयोग करना::

    आप विकल्पों में से एक जोड़े को इस पर काम करने के लिए है जब Kerberos सक्षम किया गया है यह यह संभव Windows प्रमाणीकरण का उपयोग करते समय सर्वर के बीच उपयोगकर्ता प्रमाणिकता को सौंपने के लिए बनाता है। मुझे केर्बेरोस को सेट अप करने के बारे में सटीक जानकारी नहीं है क्योंकि मैं केवल एक विनम्र डेवलपर हूं लेकिन शायद आपका सिस्टम व्यवस्थापक आपकी सहायता कर सकता है। AFAIK, आपको उपयोगकर्ता प्रतिनिधिमंडल की अनुमति देने के लिए अपना एएसपी.NET सर्वर सेट अप करने की आवश्यकता है।

  2. अपने आईआईएस आवेदन पूल की उपयोगकर्ता पहचान सेट करना: यदि केर्बेरोस कोई विकल्प नहीं है, तो आप उस एप्लिकेशन पूल की पहचान बदल सकते हैं जो आपकी एएसपी.नेट साइट चल रही है। सबसे पहले आईआईएस प्रबंधक में एक नया आवेदन पूल परिभाषित करें। फिर उस एप्लिकेशन पूल के लिए उन्नत सेटिंग्स संवाद पर जाएं और पहचान को उस डोमेन उपयोगकर्ता को सेट करें जिसे आपके एक्सचेंज सर्वर तक पहुंचने की अनुमति है। आवेदन पूल पहचान पर अधिक जानकारी यहां: http://technet.microsoft.com/en-us/library/cc771170(v=WS.10).aspx
  3. < पहचान > तत्व की स्थापना: आप किसी कारण अनुप्रयोग पूल नहीं बदल सकते हैं के लिए, आप अपने web.config फ़ाइल में < पहचान > तत्व का उपयोग कर अपने ASP.NET वेब साइट का रूप धारण करने की कोशिश कर सकते हैं। एएसपी।नेट आपको रजिस्ट्री में प्रमाण-पत्रों को संग्रहीत करने का विकल्प देता है ताकि आपको उन्हें सीधे अपनी web.config फ़ाइल में रखना न पड़े। अधिक यहाँ जानकारी: http://msdn.microsoft.com/en-us/library/72wdk8cc(v=vs.90).aspx
  4. < appSettings> ellement और एन्क्रिप्शन का उपयोग करना: अंतिम विकल्प मैं बस सामान्य < appSettings के रूप में अपने web.config फ़ाइल में साख डाल करने के लिए है के बारे में सोच सकते हैं> और फिर पूरे < appSettings एन्क्रिप्ट > खंड। फिर आप the AppSettingsReader class का उपयोग करके अपने कोड से ऐप सेटिंग्स को पढ़ लेंगे। .NET आपको बॉक्स से बाहर web.config फ़ाइल के अनुभागों को एन्क्रिप्ट करने की अनुमति देता है और आप ईवेंट को बिना एन्क्रिप्ट किए गए ईवेंट के बिना सेटिंग पढ़ सकते हैं। .NET आपके लिए डिक्रिप्ट करने का ख्याल रखता है। यहां अधिक जानकारी: http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx
संबंधित मुद्दे