2010-01-15 17 views
9

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

यह सिर्फ अनाम लॉगिन का उपयोग करता है। क्या आईई 8 या आईआईएस में विंडोज एथ 1 की कोशिश करने के लिए कोई तरीका है और फिर बेनामी पर वापस आना है?

किसी भी मदद के लिए धन्यवाद।

+0

संभावित डुप्लिकेट [एएसपी.नेट एमवीसी में फॉल-बैक के साथ एनटीएलएम प्रमाणीकरण का समर्थन कैसे करें?] (Http://stackoverflow.com/questions/4027911/how-to-support-ntlm-authentication-with- फॉल-टू-टू-फॉर्म-इन-एएसपी-नेट-एमवीसी) – Neil

उत्तर

11

आप HTTP प्रमाणीकरण (चाहे वह मूल प्रमाणीकरण या एकीकृत विंडोज प्रमाणीकरण) के लिए नहीं पूछ सकते हैं, प्रमाणीकरण संवाद बॉक्स को ऐसे मामले में पॉप किए बिना, जहां अभी तक कोई प्रमाण-पत्र नहीं है।

तो सामान्य रूप से हाइब्रिड HTTP-auth + कुकी-एथ दृष्टिकोण के लिए आप साइट के थोक के लिए अज्ञात और प्रमाणीकृत पहुंच दोनों सक्षम करते हैं, लेकिन केवल एक विशेष स्क्रिप्ट तक प्रमाणीकृत पहुंच की अनुमति देते हैं।

जब उपयोगकर्ता किसी भी प्रकार के लेखक के बिना किसी पृष्ठ तक पहुंचता है, तो आप कुकी-आधारित ऑथ के लिए लॉगिन फॉर्म के साथ एक पृष्ठ निकालते हैं, और एक यूआरएल का एक लिंक भी है जो केवल प्रमाणीकृत पहुंच की अनुमति देता है। उपयोगकर्ता कुकीज़ & फॉर्म के लिए फॉर्म भर सकता है, या इसके बजाय HTTP auth के साथ लॉग इन करने के लिए लिंक दबा सकता है।

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

ब्राउज़र केवल 401 स्क्रिप्ट, या इसकी उप-निर्देशिकाओं के समान निर्देशिका में पृष्ठों को प्रमाण-पत्र सबमिट करेंगे। इस कारण से रूट में HTTP-auth-required स्क्रिप्ट डालना सर्वोत्तम है, उदाहरण के लिए /login.aspx

हालांकि, कुछ ब्राउज़र हैं जो स्वचालित रूप से आगे के पृष्ठों के लिए प्रमाण-पत्र सबमिट नहीं करेंगे, और प्रत्येक HTTP अनुरोध को 401 को पहले प्रमाण पत्र के साथ अनुरोध भेजने से पहले जवाब देने की आवश्यकता होती है। यह वैकल्पिक-ऑथ और हाइब्रिड-ऑथ योजनाओं को असंभव बनाता है (साथ ही संरक्षित साइटों की ब्राउज़िंग को बहुत धीमा कर देता है!)। यह एकमात्र आधुनिक ब्राउज़र है जो सफारी है। आपको परवाह नहीं है, क्योंकि एकीकृत विंडोज प्रमाणीकरण के लिए सफारी का समर्थन परंपरागत रूप से कमजोर रहा है, और यह अभी भी फॉर्म + कुकीज़ ऑथ प्रकार का उपयोग कर सकता है।

+0

एचएम, डाउनवोट के लिए खेद है, पता नहीं क्यों, लेकिन स्पष्ट रूप से पूर्ववत नहीं कर सकते .. – Onkelborg