2008-09-17 16 views
5

में अज्ञात पहुंच की अनुमति देते हुए एएसपीनेट में विंडोज/डोमेन क्रेडेंशियल प्राप्त करना मेरे पास हमारे डेटासेंटर में एक एएसपी.NET वेबप्लिकेशंस चल रहा है जिसमें हम ग्राहक को एकल साइन-ऑन के साथ लॉगऑन करना चाहते हैं। अगर हम आईआईएस एकीकृत सुरक्षा का उपयोग कर सकते हैं तो यह बहुत आसान होगा। हालांकि हम यह नहीं कर सकते हैं। हमारे पास ग्राहक के डोमेन नियंत्रक पर भरोसा नहीं है। एएनडी हम वेबसाइट को सामान्य इंटरनेट पर उपलब्ध होना चाहते हैं। केवल जब लोग क्लाइंट नेटवर्क से कनेक्ट होते हैं तो उन्हें स्वचालित रूप से लॉगिन करना चाहिए।आईआईएस

हमारे पास डोमेन खातों की एक सूची है और डीसी को एएसपीनेट कोड में एलडीएपी के माध्यम से पूछने का तरीका है। जब आईआईएस में अनाम पहुंच की अनुमति है, आईआईएस कभी भी क्रेडेंशियल्स के लिए ब्राउजर को चुनौती नहीं देता है। और इस प्रकार हमारे आवेदन को उपयोगकर्ता प्रमाण-पत्र कभी नहीं मिलते हैं।

वहाँ क्रेडेंशियल्स भेजने में ब्राउज़र के लिए मजबूर (और इस प्रकार एकल साइन-ऑन का उपयोग कर सकेंगे) आईआईएस गुमनाम अनुरोध स्वीकार करने के साथ करने के लिए एक रास्ता है।

अद्यतन:

मैं 401 भेजने की कोशिश की: अनधिकृत, www प्रमाणित: अपने आप से NTLM हेडर। आगे क्या होता है (जैसा कि फिडलर मुझे बताता है) यह है कि आईआईएस पूर्ण नियंत्रण लेता है और अनुरोध की पूरी श्रृंखला को संभालता है। जैसा कि मैं विभिन्न स्रोतों से समझता हूं कि आईआईएस उपयोगकर्ता नाम लेता है, ब्राउज़र पर एक चुनौती वापस भेजता है। ब्राउजर एन्क्रिप्टेड रिपॉन्स के साथ लौटाता है और आईआईएस इस प्रतिक्रिया के साथ उपयोगकर्ता को प्रमाणित करने के लिए डोमेन नियंत्रक से जुड़ता है।

हालांकि मेरी परिदृश्य IIS ग्राहकों से एक अलग खिड़कियों डोमेन में है और उपयोगकर्ताओं को प्रमाणित करने के लिए कोई रास्ता नहीं है। इसी कारण से विंडोज़ प्रामाणिकता के साथ एक अलग साइट का निर्माण करना या तो काम नहीं करेगा।

  1. का उपयोग करना हमारे होस्टिंग डोमेन और ग्राहकों डोमेन (हमारे आईटी विभाग isn'tto इस के साथ खुश)
  2. के बीच एक डोमेन ट्रस्ट बनाना:

    अभी के लिए मैं विकल्प छोड़ दिया जो मैं शोध कर रहा हूँ करने के लिए है ग्राहकों डोमेन नियंत्रक से आईआईएस प्रमाणन अनुरोध अग्रेषित करने के लिए एक NTML प्रॉक्सी

उत्तर

0

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

आप VS2008 (या परावर्तक) में ASP.NET NTLM माड्यूल देखने के लिए क्या यह creds निकालने के लिए करता है अलग खींच की कोशिश की?

नहीं वास्तव में एक जवाब - खेद ...

-1

This solution रूपों प्रमाणीकरण के बारे में है, लेकिन यह विवरण 401 मुद्दा।

समाधान डाल वैश्विक में पालन करते हुए आवेदन के EndRequest घटना के लिए एक हैंडलर संलग्न करने के लिए बस गया था।asax:

protected void Application_EndRequest(object sender, EventArgs e) { 
    if (Context.Items["Send401"] != null) 
    { 
     Response.StatusCode = 401; 
     Response.StatusDescription = "Unauthorized"; 
    } } 

फिर, इस कोड को ट्रिगर करने के लिए, तुम सब करने की ज़रूरत एक

Context.Items["Send401"] = true; 

संपादित कर दिया गया है:
मैं इस विधि के साथ उपयोग किया है उपयोगकर्ता के डोमेन प्रमाण-पत्र प्राप्त करने के लिए बेनामी और एकीकृत चालू। मुझे यकीन नहीं है कि यह आपकी स्थिति में काम करेगा, लेकिन मैंने सोचा कि मैं एक शॉट के लायक था।

+0

ग्रेग जो मूल प्रमाणीकरण के लिए बहुत अच्छा काम करता है - फ़ॉर्म के लिए क्रेडिट प्राप्त करना आसान है - मैंने इसे पहले एसपीएस के लिए किया है। क्या एनटीएलएम के अनुरोध से जुड़े क्रेडिट भी हैं? मैंने कभी भी बेसिक ऑथ के लिए यह काम देखा है। – stephbu

3

जो आप पूछ रहे हैं उसे मिश्रित मोड प्रमाणीकरण कहा जाता है। मैंने हाल ही में two entry-point mechanism from Paul Glavich का उपयोग किया है और यह पूरी तरह से काम करता है। मुझे लगता है कि यह इस समस्या के लिए सबसे सुंदर समाधान है।