2012-01-13 15 views
6

सवालक्या एएसपी.नेट 2.0 साइट के भीतर एक एएसपी.NET 4.0 एप्लिकेशन एक ही फॉर्म प्रमाणीकरण कुकी का उपयोग कर सकता है?

के तल पर अद्यतन देखें मैं जो रूपों प्रमाणीकरण का उपयोग करता एक ASP.NET 2.0 वेब आवेदन (जैसे कि https://mysite.somedomain.com/) है। मैं https://mysite.somedomain.com/NewApp/ पर आधारित इस साइट के भीतर एक एएसपी.NET 4.0 वेब ऐप को एकीकृत करना चाहता हूं। प्रपत्र औथ बाहरी ऐप पर काम कर रहा है, लेकिन आंतरिक ऐप कुकी को अस्वीकार कर रहा है।

बाहरी (ASP.NET 2.0) वेब अनुप्रयोग पर web.config शामिल हैं:

<httpCookies requireSSL="true"/> 
<authentication mode="Forms"> 
    <forms name="MySiteWebAuth" loginUrl="/Login.aspx" protection="All" 
      path="/" timeout="90" requireSSL="true" slidingExpiration="true"/> 
</authentication> 
<machineKey (same machine key is in both configs) 
    validation="SHA1" 
    decryption="AES"/> 
<authorization> 
    <deny users="?"/> 
    <allow users="*" /> 
</authorization> 

भीतरी (ASP.NET 4.0) वेब अनुप्रयोग पर web.config शामिल हैं:

<authentication mode="Forms"> 
    <forms name="MySiteWebAuth" loginUrl="/Login.aspx" protection="All" 
      path="/" timeout="90" requireSSL="true" slidingExpiration="true" 
      ticketCompatibilityMode="Framework20"/> 
</authentication> 
<machineKey (same machine key is in both configs) 
    validation="SHA1" 
    decryption="AES"/> 

इस कोड है login.aspx.cs में सफल प्रमाणीकरण पर कुकी सेट करता है:

FormsAuthenticationTicket ticket = 
    new FormsAuthenticationTicket(
     1, 
     ApplicationContext.User.Identity.Name, 
     DateTime.Now, 
     DateTime.Now.AddMinutes(90), 
     false, 
     ApplicationContext.User.Identity.SessionID.ToString() 
    ); 
HttpCookie cookie = 
    new HttpCookie(
     FormsAuthentication.FormsCookieName, 
     FormsAuthentication.Encrypt(ticket) 
    ); 

cookie.Path = FormsAuthentication.FormsCookiePath; 
cookie.HttpOnly = true; 
Response.Cookies.Add(cookie); 

यदि मैं बाहरी वेब ऐप में लॉग इन करता हूं, तो आंतरिक वेब ऐप के भीतर किसी पृष्ठ पर नेविगेट करता है, यह लॉगिन पृष्ठ पर रीडायरेक्ट करता है और सर्वर पर इवेंट लॉग में Forms authentication failed for the request. Reason: The ticket supplied was invalid. लिखता है।

मैं एएसपी.NET 2.0 फॉर्म ऑथ टिकट को आंतरिक एएसपी.NET 4.0 वेब ऐप द्वारा स्वीकार करने के लिए कैसे प्राप्त करूं?

अद्यतन: यह HTTPS IIS 7.5 के तहत काम करता है, लेकिन HTTPS IIS 7.0 के तहत नहीं। कुछ और जांच कर रहे हैं।

अपडेट 2: हमने हैश-टकराव डीओएस के लिए हालिया पैच के साथ सर्वर पर सर्वर 2008 एसपी 2 लागू किया है और तब से कुकी साझाकरण ने काम किया है।

+0

यह वही डिक्रिप्शन और मान्यता विशेषता मान (http://msdn.microsoft.com/en-us/library/w8h3skw9(v=VS डालने लायक हो सकता है। 100) .aspx) साथ ही चाबियाँ सुनिश्चित करने के लिए। यह एएसपीनेट 1.1 और 2 – davidsleeps

+0

के बीच एक मुद्दा था बस कोशिश की (और अद्यतन प्रश्न), एक ही परिणाम। – geofftnz

उत्तर

1

मुझे लगता है कि आप इसे पढ़ते हैं - http://msdn.microsoft.com/en-us/library/eb0zx8fc.aspx - शायद अपने 4.0 ऐप से ticketCompatibilityMode विशेषता हटाएं, या कम से कम सुनिश्चित करें कि वे वही हैं।

+0

ब्राउज़र लिंक रंग ने कहा कि मेरे पास था, लेकिन इसे फिर से पढ़ने जा रहा है ... – geofftnz

+0

ने डोमेन = "thedomain" को '' तत्व में जोड़ा, उसी परिणाम (घटना संदेश: अनुरोध प्रमाणीकरण अनुरोध के लिए विफल रहा। कारण: टिकट प्रदान किया गया अमान्य था) – geofftnz

+0

हम इसे आईआईएस 7.5 पर HTTP पर काम कर रहे हैं (उत्पादन पर्यावरण HTTPS/IIS7.0 है), हम इसे खत्म करने के लिए इसे 7.5 पर HTTPS में सेट कर रहे हैं। – geofftnz

4

लगभग ऊपर उल्लिखित मूल्यों ही के सभी रखने के लिए इसके अलावा, आप 4.0 आवेदन के विन्यास फाइल में machineKey तत्व के compatibilityMode विशेषता निर्धारित करने की आवश्यकता होगी:

<machineKey compatibilityMode="Framework20SP2" validationKey="THE_KEY" decryptionKey="ANOTHER_KEY" validation="SHA1" /> 
+0

इसके लिए धन्यवाद! मैं इस मुद्दे के साथ कुश्ती कर रहा हूं, और यह मेरे लिए तय है। –

0

दोनों web.config को यह appsetting जोड़े फाइलें: मूल्य = "true"

0

तुम्हें यकीन दोनों अनुप्रयोगों में एक ही एन्क्रिप्शन कुंजी है बनाने की जरूरत है:

key = "UseLegacyFormsAuthenticationTicketCompatibility aspnet" जोड़ने web.config फ़ाइलों

<machineKey 
     validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" 
     decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" 
     validation="SHA1" /> 

Forms Authentication Across Applications

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

  • कोई संबंधित समस्या नहीं^_^