2013-04-11 10 views
13

मुझे एमवीसी 4/आईआईएस/फॉर्म प्रमाणीकरण के साथ एक अजीब अंतःविषय समस्या मिली है।एमवीसी 4/आईआईएस/फॉर्म प्रमाणीकरण एसएसओ मुद्दा

मुझे साइट्स की एक जोड़ी मिली है जो एसएसओ का उपयोग करके एक-दूसरे पर नियंत्रण पास करती है। अधिकांश समय हैंडओवर सही ढंग से होता है और उपयोगकर्ता को अगली साइट पर रीडायरेक्ट किया जाता है। हालांकि, कुछ मामलों में, उपयोगकर्ता को फिर से लॉग इन करने के लिए कहा जाता है, भले ही वैध एसएसओ जानकारी भेज दी गई हो। SSO विधि [AllowAnonymous] विशेषता के साथ सजाया गया है और web.config में सभी उपयोगकर्ताओं को /खाता/sso तक पहुंच प्रदान करने वाली स्थान प्रविष्टि भी है।

ऐसा प्रतीत होता है जब गंतव्य साइट पहली बार मारा जा रहा है - एक बार ऐप पूल गर्म होने के बाद, समस्या गायब हो जाती है।

कुछ अन्य अंक:

1 दोनों साइटों .net 4 हैं, इसलिए वहाँ किसी भी विरासत एन्क्रिप्शन मुद्दे नहीं होना चाहिए।
2. इस मुद्दे (समय की < 10%) काफी कम ही होता है इसलिए कोड में ही ध्वनि
3. होस्टिंग win7x64 पर आईआईएस 7.5 स्थानीय स्तर पर है होना चाहिए, और नीला - दोनों स्थानों
4. लगता में क्या होता है ब्राउज़र स्वतंत्र होने के लिए

<location path="account/sso"> 
    <system.web> 
     <authorization> 
      <allow users="*" /> 
     </authorization> 
    </system.web> 
</location> 

[Authorize] 
public class AccountController : BaseControllerTestable 
{ 
    public AccountController() 
     : base() 
    { 
    } 

    [AllowAnonymous] 
    public ActionResult SSO(string AuthToken, string Target) 
    { 
     //SSO logic here 

    } 
} 

कोई विचार?

+0

क्या नया सत्र शुरू होने पर लॉगऑन स्क्रीन प्रस्तुत की जाती है? दोनों वेब ऐप्स के लिए सत्र टाइमआउट सेट कैसे किया जाता है? क्या उनके पास अलग-अलग एप्लिकेशन पूल हैं? क्या इन पूलों में रीसायकल सेटिंग है? ने साइटों के प्रदर्शन काउंटर को समाप्त किया और साइट के प्रासंगिक प्रदर्शन काउंटर रिकॉर्ड किए जैसे सत्र टाइमआउट, पुनर्संरचना? – Siraf

+0

निश्चित रूप से कोड कोड की तरह लगता है। यदि आप कुकीज़, या ऐप पूल रीसाइक्लिंग का उपयोग करते हैं तो मेरा अनुमान कुकी टाइमआउट होगा।अपने प्रमाणीकरण तर्क में कुछ ट्रेसिंग रखें, क्या समस्या होने पर एसएसओ विधि निष्पादित की जा रही है? – Sergey

उत्तर

0

मैं मैं अंत में यह सुलझाया है (हम केवल पक्का पता चल जाएगा एक बार हम यह देखते हुए कि यह वैसे भी रुक-रुक कर हो गया था पुनरावृत्ति के बिना एक अच्छा है, जबकि लिया है)

कारकों में से एक जोड़े को खेलने में आया लगता है। सबसे पहले मैंने कुछ स्थैतिक आइटम (सीएसएस + जेएस फाइलें) को देखा जो प्रमाणीकरण पाश में पकड़े जा रहे थे, भले ही उन्हें आसानी से सुलभ किया जाना चाहिए, इसलिए मैंने यह सुनिश्चित करने के लिए वेब.कॉन्फिग में एक स्थान नियम जोड़ा कि उन्हें अज्ञात उपयोगकर्ताओं को अनुमति दी गई थी। मैंने अच्छे उपाय के लिए favicon.ico अनुरोधों को अनदेखा करने के लिए एक मार्ग अपवाद भी जोड़ा। यह पहली बार प्रमाणीकरण करते समय कोड को अपने आप से आगे बढ़ने से रोकना प्रतीत होता था। आखिरकार, समस्या एक दूसरे के बग के कारण हुई थी, जहां कोई अन्य सत्र खुला था (डीबी संचालित) मुद्दा नहीं हुआ था। इसने समझाया कि क्यों बग सुबह जल्दी ही हुआ था यानी: पिछले दिन के सभी सत्र समाप्त हो गए थे।

0

आपका बेसकंट्रोलरटेस्टेबल क्या है? क्या आपके पास प्रमाणीकरण विशेषताएँ हैं? व्युत्पन्न कक्षा पर आपके अन्य तरीकों से पहले आपकी बेस क्लास तुरंत एफआईआर होगी। तो अगर किसी भी मौके से आपके पास [प्राधिकरण] आधार नियंत्रक पर है जो आपके लिए एक मुद्दा हो सकता है।

1

आपके पास अपने कंट्रोलर क्लास पर एक अधिकृत विशेषता है जिसका अर्थ है कि आपकी एसएसओ विधि को अनुमति दें और अधिकृत करने के लिए प्राधिकरण लागू होगा। इस उदाहरण में प्राधिकृत विशेषता दिखती है जैसे इसे हटाया जाना चाहिए।

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