2012-10-04 11 views
5

के साथ विंडोज प्रमाणीकरण मुझे वर्तमान में एसएसआरएस का उपयोग कर कुछ समस्याएं आ रही हैं। मेरे पास एक एएसपी.नेट वेबसाइट है जो विंडोज प्रमाणीकरण का उपयोग करती है। यह ठीक काम करता है और मुझे पता है कि वेबसाइट वर्तमान उपयोगकर्ता वर्तमान में लॉग ऑन उपयोगकर्ता है।एसएसआरएस एएसपी.NET रिपोर्ट व्यूअर और वेब सेवा

इस साइट पर एक वेबफॉर्म ReportViewer है। जब मैं प्रमाण-पत्र सेट नहीं करता हूं तो यह ठीक काम करता है। हालांकि SQL सर्वर में रिपोर्ट के लिए निष्पादन लॉग को देखते हुए उपयोगकर्ता नाम DOMAIN \ MACHINE के रूप में सूचीबद्ध है।

मैं नीचे एक तरह एक वर्ग के लिए ReportServerCredentials संपत्ति की स्थापना की कोशिश की है:

[Serializable] 
public class ReportCredentials : IReportServerCredentials 
{ 

    public bool GetFormsCredentials(out Cookie authCookie, out string userName, out string password, out string authority) 
{ 
    authCookie = null; 
    userName = null; 
    password = null; 
    authority = null; 

    return false; 
} 

public WindowsIdentity ImpersonationUser 
{ 
    get { 
     return (WindowsIdentity)HttpContext.Current.User.Identity; 
    } 
} 

public ICredentials NetworkCredentials 
{ 
    get { 
     return null; 
    } 
} 

}

हालांकि, जब इस कोड को निष्पादित करता है मैं अब वेब सेवा और रिपोर्ट से वापस एक 401 मिलता है सर्विस।

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

उत्तर

0

return (WindowsIdentity)HttpContext.Current.User.Identity; 

के बजाय

return WindowsIdentity.GetCurrent(); 
+0

ये मैंने कोशिश की है कि पहले, लेकिन अभी भी मिल गया एक 401 :( – Lloyd

+0

असल में मैं झूठ बोलना, कैश्ड किया गया होगा। रिपोर्ट अब चलता है, लेकिन उपयोगकर्ता नाम \t कर्मचारियों \ UKBRISDDWRKA424 $ मशीन है। गरर के रूप में दर्ज किया गया है। – Lloyd

4

मैं अपने ही मुसीबतों यहाँ हो रही थी लेकिन अंत में सफल रहा था आप की कोशिश कर सकते।

मशीन 1: ग्राहक ब्राउज़र

मशीन 2: वेबसर्वर

मशीन 3: SSRS + एसक्यूएल सर्वर

डबल हॉप मैं Machine2 के लिए सक्रिय निर्देशिका प्रतिनिधिमंडल पर आईटी विभाग बारी थी हल करने के लिए, "किसी भी सेवा (केवल केर्बेरोज) के लिए प्रतिनिधिमंडल के लिए इस कंप्यूटर पर भरोसा करें"। SSRS सर्वर मैं Rsreportserver.config फ़ाइल संशोधित पर

<authentication mode="Windows"/> 
<identity impersonate="true"/> 

, <AuthenticationTypes> अनुभाग के लिए <RSWindowsNegotiate/> जोड़ने:

मेरी वेब सर्वर पर मैं Web.config फ़ाइल संशोधित करने के लिए। मेरा मानना ​​है कि डिफ़ॉल्ट <RSWindowsNTLM/> है। मैं तो बस छोड़ दिया दोनों वहाँ में, मुझे दे रही है:

मैं SSRS सर्वर को पुनः आरंभ और सभी काम करना शुरू किया।

उम्मीद है कि यह किसी की मदद करेगा!

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