2010-06-10 22 views
5

मैं एएसपी.नेट वेब ऐप पर होस्ट किए गए चांदी के आवेदन का निर्माण कर रहा हूं।/आईआईएस 7/एसएसएल-सक्षम वेबसाइट।
सुरक्षा के लिए, मैं ASP.NET वेब अनुप्रयोग में एक सदस्य फ़ोल्डर के अंदर मेरी Silverlight पेज रखा, और गुमनाम उपयोगकर्ताओं के लिए उपयोग सीमित कर दिया। (नीचे web.config देखें)एएसपी.नेट लॉगिन पेज रीडायरेक्शन समस्या

जब उन सदस्यों फ़ोल्डर के अंतर्गत पृष्ठों तक पहुँचने का प्रयास, वे https://www.ssldemo.com/authenticationtest/login.aspx पर रीडायरेक्ट हो जाते हैं। (नीचे web.config देखें) (मैंने www.ssldemo.com को 127.0.0.1 में मैप किया है)। सुरक्षा के लिए , मैं login.aspx में HTTPS पर स्विच कर रहा हूं, और सत्यापन के बाद HTTP पर वापस आ गया हूं। नीचे login.aspx.cs के लिए कोड है।

protected void Page_Load(object sender, EventArgs e) 
    { 
     LoginControl.LoggedIn += new EventHandler(LoginControl_LoggedIn); 
    } 

    void LoginControl_LoggedIn(object sender, EventArgs e) 
    { 
     //for going to ReturnURL & switching back to HTTP 
     string serverName = HttpUtility.UrlEncode(Request.ServerVariables["SERVER_NAME"]); 
     string returnURL = Request["ReturnURL"]; 
     Response.Redirect(ResolveClientUrl("http://" + serverName + returnURL)); 
    } 

समस्या यह है, जब मैं http://www.ssldemo.com/authenticationtest/members/AnotherApplication/ और खुले http://www.ssldemo.com/authenticationtest/members/AnotherApplication/default.aspx को एक और आवेदन की तैनाती, उपयोगकर्ता https://www.ssldemo.com/authenticationtest/login.aspx?ReturnUrl=%2fauthenticationtest%2fmembers%2fanotherapplication%2fdefault.aspx पर पुनः निर्देशित मिलता है। लेकिन जब भी मैं लॉगिन पेज पर सही प्रमाण-पत्र दर्ज करता हूं, तब भी मुझे उसी लॉगिन पृष्ठ पर रीडायरेक्ट किया जाता है,, रिटर्नयूआरएल पर नहीं। जब मैंने फिडलर में देखा, तो उसने कहा '302 वस्तु यहां चली गई।'

पढ़ने के लिए धन्यवाद! किसी भी इनपुट की सराहना की जाएगी।

<configuration> 
<connectionStrings> 
    <add name="CompanyDatabase" connectionString="Data Source=192.168.0.2;Initial Catalog=SomeTable;User ID=Username;[email protected]" /> 
</connectionStrings> 

<system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    <authentication mode="Forms"> 
     <forms slidingExpiration="true" timeout="15" 
       loginUrl="https://www.ssldemo.com/authenticationtest/login.aspx" 
       defaultUrl="~/Members/Default.aspx" 
       > 
     </forms> 
    </authentication> 
    <!--Custom Membership Provider--> 
    <membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="15"> 
     <providers> 
      <clear /> 
      <add name="MyMembershipProvider" 
       type="AuthenticationTest.Web.MyMembershipProvider" 
       connectionStringName="CompanyDatabase" 
       applicationName="AuthenticationTest.Web"/> 
     </providers> 
    </membership> 
</system.web> 
<!--securing folders--> 
<location path="Members"> 
    <system.web> 
     <authorization> 
      <deny users="?"/> 
     </authorization> 
    </system.web> 
</location>  
</configuration> 

उत्तर

3

सदस्यों नीचे आवेदन (उप एप्लिकेशन) के ऊपर एक से सेटिंग इनहेरिट, तो यह आपके प्रमाणन सेटिंग्स को चुनता है, जिसके कारण यह है कि प्रवेश पृष्ठ पर चला जाता है।

कारण यह कभी काम नहीं करता है कि टिकट कैसे एन्क्रिप्ट किया जाता है। जब तक आप कुछ अतिरिक्त कॉन्फ़िगर नहीं करते हैं तब तक टिकटों को एप्लिकेशन के बीच पुन: उपयोग नहीं किया जा सकता है। यह एक ऐप में प्रमाणीकरण करने वाला उपयोगकर्ता बंद करता है और सर्वर पर हर दूसरे ऐप तक पहुंचता है। Asp.Net प्रत्येक ऐप के लिए एक नई यादृच्छिक कुंजी बनाकर करता है।

सबसे पहले आपको फॉर्म तत्व में enableCrossAppRedirects = true जोड़ने की आवश्यकता है। फिर आपको मशीनकी को दोनों ऐप्स में समान होने की आवश्यकता है ताकि दोनों ऐप्स ऑथ टिकट को डीकोड कर सकें।

यह पृष्ठ http://msdn.microsoft.com/en-us/library/eb0zx8fc.aspx

मदद कर सकता है
संबंधित मुद्दे