28

हमें यह समझने में कठिनाई हो रही है कि ये प्रमाण-पत्र कैसे काम करते हैं। वास्तव में, वे काम नहीं कर सकते हैं कि हम उन्हें कैसे काम करने की उम्मीद करते हैं। वर्तमान मुद्दे की व्याख्या यहां दी गई है।डिफ़ॉल्ट प्रमाणपत्र और डिफ़ॉल्ट नेटवर्क प्रमाणपत्र का उपयोग

हमें 2 सर्वर मिलते हैं जिन्हें वेबसाइकिलों के माध्यम से एक-दूसरे से बात करने की आवश्यकता होती है। पहला वाला (चलो इसे Server01 पर कॉल करें) में Windows सेवा नेटवर्क नेटवर्क सेवा के रूप में चल रही है। अन्य Server02 में आईआईएस 6.0 के साथ चल रहे रिपोर्टिंग सर्विसेज हैं। Server01 पर विंडोज सेवा रिपोर्ट बनाने और उन्हें ईमेल द्वारा भेजने के लिए Server02 रिपोर्टिंग सेवा वेब सेवा का उपयोग करने का प्रयास कर रही है।

तो, हमने अभी तक जो प्रयास किया है, वह यहां है।

कार्यावधि में साख की स्थापना (यह बिल्कुल ठीक काम करता है):

rs.Credentials = new NetworkCredentials("user", "pass", "domain"); 

हालांकि अब ... हम की अनुमति नहीं है अगर हम एक सामान्य उपयोगकर्ता इस्तेमाल कर सकते हैं सब ठीक हो जाएगा। तो, हम आरएस वेब सेवा करने के लिए DefaultCredetials या DefaultNetworkCredentials का उपयोग करें और इसे पारित करने की कोशिश कर रहे:

rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials 

या:

rs.Credentials = System.Net.CredentialCache.DefaultCredentials 

किसी भी तरह से काम नहीं करेगा। हम हमेशा आईआईएस से 401 अनौपचारिक हो रहे हैं।

एक रिमोट एसक्यूएल सर्वर

यदि आप में पहुंच प्रदान करना: अब, क्या हम जानते हैं कि अगर हम एक संसाधन NetworkService के रूप में लॉग करने के लिए पहुँच प्रदान करना चाहते हैं, तो हम DOMAIN\MachineName$ (http://msdn.microsoft.com/en-us/library/ms998320.aspx) को प्रदान करने की आवश्यकता है एक ही डोमेन (या एक विश्वसनीय डोमेन में) किसी अन्य सर्वर पर डेटाबेस तक पहुंच रहे हैं, नेटवर्क सेवा खाते के नेटवर्क प्रमाण-पत्र डेटाबेस में प्रमाणीकृत करने के लिए उपयोग किए जाते हैं। नेटवर्क सेवा खाता के प्रमाण पत्र डोमेन नाम \ AspNetServer $ के रूप में हैं, जहां डोमेन नाम ASP.NET सर्वर का डोमेन है और AspNetServer आपका वेब सर्वर नाम है।

उदाहरण के लिए, यदि आपका ASP.NET एप्लिकेशन डोमेन CONTOSO में SVR1 नामक सर्वर पर चलता है, तो SQL सर्वर CONTOSO \ SVR1 $ से डेटाबेस एक्सेस अनुरोध देखता है।

हमने माना है कि आईआईएस के साथ समान तरीके से पहुंच प्रदान करना होगा। हालांकि, यह नहीं है। या कम से कम, सही तरीके से प्रमाणीकृत करने के लिए कुछ ठीक से सेट नहीं किया गया है।

तो, यहाँ कुछ प्रश्न हैं:

  1. हम के बारे में "ग़लत पहचान बनाना उपयोगकर्ता" पढ़ा है कहीं न कहीं, हम Windows सेवा में यह कहीं स्थापित करने के लिए की जरूरत है?

  2. क्या रिमोट आईआईएस सर्वर में अंतर्निहित नेटवर्क सेवा सेवा तक पहुंच प्रदान करना संभव है?

पढ़ने के लिए धन्यवाद!

उत्तर

8

सभी विवरण आप इस बहुत पुरानी लेख में शामिल किए गए हैं की जरूरत है,

http://msdn.microsoft.com/en-us/library/ms998351.aspx

संक्षेप में, जब आप यह भ्रामक इस तरह समस्याओं का निवारण करने के लिए, आपको पहले ASP.NET के पीछे तकनीकी जानकारी की समीक्षा करनी चाहिए प्रतिरूपण सावधानी से।

+0

उत्कृष्ट लिंक: डी – omglolbah

+1

एमएसडीएन में 2 घंटे पढ़ने वाले लेख को जोड़ने के बजाय, संक्षेप में प्रश्न के वास्तविक उत्तर को लिखना अच्छा लगेगा, और दूसरों को दोष देना पढ़ा नहीं है यह :) –

+0

@ d.popov मूल चीजों को संक्षेप में मेरे लिए वास्तव में एक चुनौती है। यदि आप इसमें रूचि रखते हैं तो आप स्वयं को आजमा सकते हैं। कहना है कि सवाल का वास्तविक जवाब उस लेख से छोटा नहीं होगा। –

0

यहां कुछ चीजें हैं जिन्हें आप देख सकते हैं: - रिपोर्टिंग सेवा के लिए एक एसपीएन (सेवा प्रिंसिपल नेम) सेट करें; आप Google में अच्छे उदाहरण पा सकते हैं; - प्रतिनिधिमंडल की अनुमति दें (क्लाइंट क्रेडेंशियल्स। विन्डोज़.एलो इंपर्सेशन लेवल)

0

क्या समस्या है कि आप आईआईएस को प्रमाणीकृत करने में विफल रहे हैं, या एसएसआरएस को प्रमाणीकृत करने में विफल रहे हैं? जिस रिपोर्ट को आप स्वचालित करने का प्रयास कर रहे हैं उसे चलाने के लिए DOMAIN \ MachineName $ खाते को एसएसआरएस में अनुमति दी जानी चाहिए।

एसएसआरएस आम तौर पर आईआईएस को सही तरीके से कॉन्फ़िगर करने का एक अच्छा काम करता है, इसलिए आपको उन सेटिंग्स के साथ गड़बड़ करने की आवश्यकता नहीं है। मैंने अपनी स्थापना को दोबारा जांच लिया (जो एसएसआरएस 2005 है, एसएसआरएस 2000 में चीजें अलग-अलग काम कर सकती हैं और आपने यह नहीं कहा कि आप कौन सा संस्करण चला रहे हैं), और यह विंडोज प्रमाणीकरण का उपयोग करने के लिए सेट है और प्रतिरूपण सक्षम है। इसका मतलब है कि आईआईएस मूल रूप से केवल आपके क्रेडेंशियल्स (सही उपयोगकर्ता नाम/पासवर्ड को मान्य करना) प्रमाणित करना चाहिए, यह प्राधिकृत नहीं करना चाहिए (यह निर्धारित करना कि उस उपयोगकर्ता को प्रश्न में रिपोर्ट चलाने की अनुमति है या नहीं)। आईआईएस तब एसएसआरएस पर प्रमाण पत्र पास करता है, जिसमें यह निर्धारित करने के लिए अपनी सेटिंग्स होती है कि खातों को रिपोर्ट देखने की अनुमति क्या है।

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

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