एक कुकी एक सब-डोमेन पर बनाई गई है, कुछ भी परावर्तक को देखा करने के बाद वहाँ एक (कुछ गैर-दस्तावेजी) रूपों में से विशेषता है प्रमाणीकरण। जब EnableCrossAppRedirects
सक्षम है .NET कुकी, ऑथ कुकी की तलाश के अलावा, प्रपत्र प्रमाणीकरण "कुकी" को फॉर्म पोस्ट या क्वेरी स्ट्रिंग से निकालने का प्रयास करेगा। यह कोड FormsAuthentication
कक्षा में ExtractTicketFromCookie
विधि में एम्बेड किया गया है, जहां यह अनुरोध डेटा में प्रमाणीकरण कुकी खोजने की कोशिश कर रहा है।
if (FormsAuthentication.EnableCrossAppRedirects)
{
text = context.Request.QueryString[name];
if (text != null && text.Length > 1)
{
if (!cookielessTicket && FormsAuthentication.CookieMode == HttpCookieMode.AutoDetect)
{
cookielessTicket = CookielessHelperClass.UseCookieless(context, true, FormsAuthentication.CookieMode);
}
try
{
formsAuthenticationTicket = FormsAuthentication.Decrypt(text);
}
catch
{
flag2 = true;
}
if (formsAuthenticationTicket == null)
{
flag2 = true;
}
}
if (formsAuthenticationTicket == null || formsAuthenticationTicket.Expired)
{
text = context.Request.Form[name];
if (text != null && text.Length > 1)
{
if (!cookielessTicket && FormsAuthentication.CookieMode == HttpCookieMode.AutoDetect)
{
cookielessTicket = CookielessHelperClass.UseCookieless(context, true, FormsAuthentication.CookieMode);
}
try
{
formsAuthenticationTicket = FormsAuthentication.Decrypt(text);
}
catch
{
flag2 = true;
}
if (formsAuthenticationTicket == null)
{
flag2 = true;
}
}
}
}
इसलिए अगर आपको दोनों ऐप्लिकेशन पर EnableCrossAppRedirects
सक्षम करते हैं तो पहले आवेदन बाहरी साइट पर रीडायरेक्ट करने के लिए अधिकृत किया गया है, और दूसरा आवेदन स्वचालित रूप से अनुरोध से प्रमाणीकरण कुकी में पढ़ा जाएगा। आपको बस इसे इंजीनियर करने की आवश्यकता है ताकि वापसी लॉगिन यूआरएल या तो कुकी डेटा पोस्ट कर सके या क्वेरीस्ट्रिंग में भेज सके। आपको यह सुनिश्चित करने की भी आवश्यकता है कि या तो मशीन कुंजियां सिंक्रनाइज़ हों, या कुकी को बाहरी ऐप्स मशीन कुंजी (पहले ऐप द्वारा) का उपयोग करके एन्क्रिप्ट किया गया हो। यह डिफ़ॉल्ट रूप से लगता है .NET आपके लिए क्वेरीस्ट्रिंग में एन्क्रिप्टेड प्रमाणीकरण कुकी भेज देगा और आपके मशीन कुंजियां सिंक हो जाएंगी (नीचे एमएसडीएन उद्धरण देखें)।
यहां कुछ और info on MSDN है।
तो CookiesSupported संपत्ति सच है, और या तो ReturnUrl चर वर्तमान आवेदन के भीतर है या EnableCrossAppRedirects संपत्ति सत्य है, तभी RedirectFromLoginPage विधि एक प्रमाणीकरण टिकट और यह डिफ़ॉल्ट कुकी में स्थानों का उपयोग करते हुए जारी करता है SetAuthCookie विधि।
यदि कुकीज़ समर्थित है तो गलत है और रीडायरेक्ट पथ वर्तमान एप्लिकेशन में एक यूआरएल के लिए है, तो टिकट रीडायरेक्ट यूआरएल के हिस्से के रूप में जारी किया जाता है। तो CookiesSupported गलत है, EnableCrossAppRedirects सच है, और रीडायरेक्ट URL वर्तमान आवेदन के भीतर एक पृष्ठ का उल्लेख नहीं करता, RedirectFromLoginPage विधि एक प्रमाणीकरण टिकट और यह स्थानों QueryString संपत्ति में जारी करता है।
सुरक्षा पर असर के बारे में एक बड़ी चेतावनी है। EnableCrossAppRedirects
एक सुरक्षा सेटिंग है जो ASP.NET लॉगिन नियंत्रण को बाहरी रिटर्न URL (अन्य वेब एप्लिकेशन) पर रीडायरेक्ट करने से रोकती है। इस सेटिंग के साथ इसे आक्रमण के कुछ रूपों में शोषित किया जा सकता है - उपयोगकर्ता को आधिकारिक लॉगिन पेज पर भेजा जाता है, लेकिन लॉगिन पर एक अलग एप्लिकेशन पर रीडायरेक्ट किया जाता है जिसे वे मान सकते हैं। यही कारण है कि यह डिफ़ॉल्ट रूप से अक्षम है।
एक मदद करने के लिए इस को कम जब सुविधा को सक्षम करने इस प्रकार है जिस तरह से:
का उपयोग करते समय पार आवेदन पुनर्निर्देश सुरक्षा को बेहतर बनाने के लिए, आप रीडायरेक्ट केवल करने के लिए मंजूरी दे दी वेब साइटों अनुमति देने के लिए RedirectFromLoginPage विधि ओवरराइड करना चाहिए ।
आपको यह भी सुनिश्चित करने के लिए पुन: निर्देशन अनुरोध "कुकी" पारगमन में की रक्षा के लिए SSL पर पेश किया जाता है, के रूप में किसी को भी बाधा उत्पन्न कर रहा खाते का नियंत्रण हासिल करने में सक्षम हो जाएगा की जरूरत है।
क्षमा करें मेरे उत्तर में संशोधन किया गया है, .NET की एक छिपी हुई विशेषता है जो स्वचालित रूप से प्रमाणीकरण कुकी को फ़ॉर्म फॉर्म या क्वेरी स्ट्रिंग के रूप में उठाएगी। मैंने अभी कुछ नया सीखा है! – TheCodeKing
महान जवाब! तो मैं 'नो कुकीज़' ऑथ की सुविधा को कम करने का तरीका हूं। सुरक्षा खतरे: मैं RedirectFromLoginPage का उपयोग नहीं कर रहा हूं, इसलिए मैं नियंत्रित करता हूं कि उपयोगकर्ता को रीडायरेक्ट किया जाता है। एसएसएल पर रीडायरेक्ट - पोस्ट/क्वेरीस्ट्रिंग पर टोकन फॉर्मूथ कुकी से कम सुरक्षित नहीं है, सुरक्षित शर्त पूरी वेबसाइट को एसएसएल पर रखना है। – russau
बीटीडब्ल्यू - क्यों समुदाय विकी? जब भी मैं इसे पुरस्कार दूंगा तब भी आपको बक्षीस मिलेगा? – russau