2012-01-30 16 views
5

पर विंडोज प्रमाणीकरण को पुनर्निर्देशित करना हम अपने कुछ वेब अनुप्रयोगों को परिवर्तित कर रहे हैं जो प्रपत्र प्रमाणीकरण के तहत चलने के लिए उपयोग किए जाते हैं, अब विंडोज प्रमाणीकरण के रूप में चलाने के लिए। मैं पृष्ठ सुरक्षा को फिर से बनाना चाहता हूं जो प्रमाणीकरण बनाता है वास्तविक पृष्ठों में न्यूनतम संशोधन के साथ। मैं एक सरलीकृत वेब ऐप के साथ, जो प्रभाव चाहता हूं उसे फिर से बनाने में सक्षम था। मैं सर्वर 2008 आर 2 एकीकृत पाइपलाइन आईआईएस 7.5 पर ऐप चला रहा हूं।एक कस्टम 401 पेज

मैंने विंडोज प्रमाणीकरण का उपयोग करके एक साधारण 3 पेज ऐप बनाया है। तीन पृष्ठों हैं:

  • Openpage.aspx, कि
  • Blockedpage.aspx किसी भी प्रमाणित उपयोगकर्ता है कि सभी उपयोगकर्ताओं (कोई निर्देशिका या पेज का प्रतीक है कि उपयोगकर्ताओं के एक सबसेट को अवरुद्ध किया जाएगा करने के लिए अवरुद्ध है के लिए खुला है उपयोगकर्ता भूमिका के आधार पर)
  • ErrorPage.aspx, अगर blockpage.aspx को एक्सेस किया गया है (और अस्वीकार कर दिया गया है) तो एप्लिकेशन को ErrorPage.aspx पर अग्रेषित करना चाहिए जहां उपयोगकर्ता को एप्लिकेशन के बारे में सामान्य जानकारी मिलती है।

अनुप्रयोग के लिए Web.Config:

<configuration> 
    <system.web> 
     <compilation debug="true" targetFramework="4.0" /> 
     <authentication mode="Windows"/> 
     <authorization> 
     <deny users="?" /> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    <location path="blockedpage.aspx"> 
    <system.web> 
     <authorization> 
     <deny users="*"/> 
     </authorization> 
    </system.web> 
    </location> 
    <system.webServer> 
    <httpErrors errorMode="Custom" > 
     <remove statusCode="401" subStatusCode="-1" /> 
     <error statusCode="401" path="/development/simplesecurityapp/errorpage.aspx" responseMode="ExecuteURL" /> 
    </httpErrors> 

    <validation validateIntegratedModeConfiguration="false" /> 
    <defaultDocument> 
     <files> 
     <clear /> 
     <add value="openpage.aspx" /> 
     </files> 
    </defaultDocument> 
    </system.webServer> 

</configuration> 

(मैं asp.net स्तर पर 401 पुनर्निर्देशन त्रुटियों के प्रयास नहीं करते हैं, तो मैं सिर्फ मानक प्राप्त "नहीं अधिकृत संदेश" जो प्रभाव नहीं है मैं अपने उपयोगकर्ताओं को देना चाहता हूं।)

हालांकि, मुझे एक त्रुटि मिल रही है जिसे मैं समझ नहीं पा रहा हूं - प्रत्येक बार जब सर्वर रीसेट हो जाता है, तो ऐप काम करना बंद कर देता है। आईआईएस केवल 401 त्रुटियों को लौटाता है जब तक ब्राउज़र मैन्युअल लॉग-इन नियंत्रण पॉप अप नहीं करता है, जो संतुष्ट नहीं हो सकता है। (मैं कभी भी अपने उपयोगकर्ताओं को ब्राउजर लॉग-इन प्रॉम्प्ट के साथ प्रस्तुत नहीं करना चाहता)

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

1) इस विंडोज़ प्रमाणीकरण के साथ किसी एप्लिकेशन (सुरक्षित करने के लिए सही तरीका एक निर्देशिका रूपों में जैसे दुर्गम कॉन्फ़िगर करते हैं, अभी तक अभी भी आपूर्ति करने के लिए एक परिष्कृत त्रुटि पृष्ठ एक बेहतर तरीका है?)

2) इस है एकीकृत पाइपलाइन का प्रभाव और यह इस तरह से क्यों काम कर रहा है?

उत्तर

1

आप एक परिवहन त्रुटि संदेश पर सामग्री प्रदान करने की कोशिश कर रहे हैं।

फॉर्म आपको ऐसा करने की अनुमति देता है क्योंकि यह परत 7 सामान, जैसे 302 और 200s से बना है। क्लाइंट ब्राउजर द्वारा 401 का अर्थ है "सर्वर को मेरे क्रेडेंशियल्स पसंद नहीं आया, इसलिए नए लोगों से पूछने के लिए एक संवाद बॉक्स उठाएं"।

प्रमाणीकृत होने के लिए एक प्रमाणित पृष्ठ कम से कम 1 401 उत्पन्न करता है; कि आप किसी और चीज के लिए "त्रुटि" ओवरलोड कर रहे हैं शायद समस्या की जड़ है।

मुझे यकीन नहीं है कि आप जो चाहते हैं उसे करने का एक शानदार तरीका है।