2012-02-03 15 views
9

के साथ फ़ेडरेट करते समय टाइमआउट को सही तरीके से कैसे सेट करें मैं कुछ समय के लिए एडीएफएस 2.0 का उपयोग कर रहा हूं और मैं समझता हूं कि चीजें कैसे काम करती हैं। मैंने दर्जनों कस्टम आरपी, कस्टम एसटीएस के साथ-साथ एडीएफएस का उपयोग भरोसेमंद एसटीएस के रूप में किया है।ADFS 2.0

हालांकि, मेरे पास एक साधारण आवश्यकता है जिसे मैं अभी भी पूरा करने में असफल रहा हूं।

मैं चाहता हूं कि मेरे उपयोगकर्ताओं को कुछ निश्चित समय के बाद relogin पर मजबूर होना पड़े। मान लें कि परीक्षण उद्देश्यों के लिए 1 मिनट का कहना है।

सबसे पहले, मैंने आरपी के पक्ष में कुछ सुधार किए हैं। ऐसा लगता है कि अज्ञात कारण के लिए, आरपी सत्र को बरकरार रखता है भले ही टोकन के validTo समय पर वापस बिंदु। यह विरोधाभास है कि विटोरियो बर्टोकसी ने अपनी पुस्तक (पृष्ठ 123) में क्या कहा है, जहां वह दिखाता है कि स्लाइडिंग समाप्ति कैसे करें - वह कहता है कि "सत्र प्रमाणीकरण मॉड्यूल के बाद समाप्त होने वाले सत्र को संभालने का ख्याल रखेगा"। ठीक है, मेरे लिए यह नहीं है, हालांकि मैं एक चाल यहाँ http://blogs.planbsoftware.co.nz/?p=521 पाया है करता है - पर एक नज़र "अगर" खंड:

 sam.SessionSecurityTokenReceived += 
      (s, e) => 
      { 
       SessionAuthenticationModule _sam = s as SessionAuthenticationModule; 

       DateTime now = DateTime.UtcNow; 

       DateTime validFrom = e.SessionToken.ValidFrom; 
       DateTime validTo = e.SessionToken.ValidTo; 

       try 
       { 
        double halfSpan = (validTo - validFrom).TotalSeconds/2; 
        if (validTo < now) 
        { 
         _sam.DeleteSessionTokenCookie(); 
         e.Cancel = true; 
        } 
       } 
       catch (Exception ex) 
       { 
        int v = 0; 
       } 
      }; 

यह चाल आर पी एस पक्ष में समस्या ठीक होती है। जब टोकन अमान्य है तो एप्लिकेशन इसे साफ़ कर देता है और लॉगिन पृष्ठ पर रीडायरेक्ट करता है।

अब समस्या आती है। मेरा लॉगिन पेज FederatedPassiveSignIn नियंत्रण का उपयोग करता है। क्लिक करने पर, यह ब्राउज़र को ADFS पर रीडायरेक्ट करता है।

लेकिन एडीएफएस खुशी से नए सत्र उपयोगकर्ता के लिए किसी भी संकेत के बिना बनाता है।

मैं इस आरपी के लिए टोकन के जीवनकाल की स्थापना की है 1 करने के लिए:

Set-ADFSRelyingPartyTrust -Targetname "myrpname" -TokenLifetime 1 

और Get-ADFSRelyingPartyTrust का उपयोग कर मैं देख सकता हूँ यह 1 पर सेट है कि (मैं भी टोकन validTo अपने पन्ने पर पुष्टि करते हैं कि इस सेट कर दिया जाता प्रिंट सही ढंग से)।

ADFS-SetProperties -SsoLifetime 1 
ADFS-SetProperties -ReplyCacheExpirationInterval 1 
ADFS-SetProperties -SamlMessageDeliveryWindow 1 

लेकिन फिर भी प्रयास विफल:

तब मैं ADFS-SetProperties से ADFS गुण सेट करें। मैं अब अटक गया हूँ।

परिदृश्य मेरे कस्टम एसटीएस के साथ सही तरीके से काम करता है जहां एसटीएस सत्र की वैधता फॉर्म कुकी पर आधारित होती है - अगर मैं अपने आरपी अनुप्रयोग में निष्क्रियता के 1 मिनट के बाद एसटीएस के फॉर्म कुकी टाइमआउट को 1 पर सेट करता हूं, तो मुझे रीडायरेक्ट किया जाता है मेरे आरपी का लॉगिन पेज जो फिर एसटीएस पर रीडायरेक्ट करता है जो इसके लॉगिन पेज को प्रस्तुत करता है।

हालांकि, यह ADFS 2.0 के मामले में नहीं है। निष्क्रियता के एक मिनट के बाद, मुझे अपने आरपी के लॉगिन पेज पर रीडायरेक्ट किया गया है जो एडीएफएस के लॉगिन पेज पर रीडायरेक्ट करता है जो बदले में फिर से रीडायरेक्ट करता है जैसे ही सत्र एडीएफएस के भीतर सक्रिय होगा।

मैं चाहते हैं किसी के लिए:

(1) शीर्ष पर वर्णित हैक पर एक नज़र डालें और इसका कारण बताएं एक सीमा समाप्त टोकन स्वचालित रूप से अस्वीकार कर दिया है और इस तरह के बदसूरत हैक की जरूरत है

(2) एडीएफएस 2.0 पक्ष में सत्र को सही तरीके से टाइमआउट करने का तरीका बताएं ताकि टोकन को नवीनीकृत करने का अनुरोध लॉगिन पृष्ठ से संरक्षित हो।

अग्रिम धन्यवाद।

संपादित

मैं पुष्टि कर सकता है कि 1 मिनट के लिए सब से ऊपर मानकों की स्थापना करता है ADFS सत्र 5 मिनट (या अधिक) के बाद अमान्य। यह संघर्ष है और ऐसा लगता है कि या तो मैं मूल गलती कर रहा हूं या 5 मिनट न्यूनतम स्वीकार्य मूल्य है।

ऊपर से मेरा (2) अब सिर्फ मेरे अवलोकन की पुष्टि और व्याख्या करने के लिए है।

+0

मेरे पीओवी से जो जानकारी आप प्रदान करते हैं वह मदद करने के लिए पर्याप्त नहीं है (हालांकि आप बहुत सारी जानकारी प्रदान करते हैं) क्योंकि टाइमआउट व्यवहार इतने सारे differents भागों (एसटीएस, आरपी ...) की सेटिंग्स पर निर्भर करता है और इन्हें कैसे लागू किया जाता है। .. चूंकि आप बहुत से कस्टम लोगों का उपयोग करते हैं, उन्हें भारी अनुमान लगाया जाता है :-( – Yahia

+0

@ याहिया: ब्याज के लिए धन्यवाद। आप देखते हैं कि वहां कोई कस्टम घटक नहीं हैं। यह एडीएफएस 2.0 है, जो बॉक्स से बाहर स्थापित है और डब्ल्यूआईएफ आरपी की तरफ। अटकलों के लिए कोई कमरा नहीं, मेरी राय में। –

+0

तब मैंने माना कि * मैंने कस्टम आरपीएस के दर्जनों, कस्टम एसटीएस के साथ-साथ एडीएफएस का उपयोग गलती से एसटीएस * के रूप में किया है। – Yahia

उत्तर

8

(ओ पी के साथ संयुक्त प्रयास) FederatedPassiveSignIn उदाहरण पर Freshness संपत्ति 0.

http://docs.oasis-open.org/wsfed/federation/v1.2/ws-federation.html इस के अनुसार सेट किया जाना चाहिए ऊपर टिप्पणियों के अनुसार आईपी/एसटीएस के लिए इंगित करता है प्रमाणीकरण के लिए उपयोगकर्ता को फिर से संकेत करने के लिए टोकन जारी करने से पहले।

+0

फिर से धन्यवाद। मैंने जवाब स्वीकार कर लिया है और इसे मेरी बक्षीस से सम्मानित किया है। –

+0

आपका स्वागत है :-) [एमएसडीएन] के अनुसार (http://msdn.microsoft.com/en-us/library/ff650503.aspx) व्यवहार डिज़ाइन द्वारा किया जाता है - उद्धरण: * एक सकारात्मक उपयोगकर्ता अनुभव सुनिश्चित करने के लिए , उपयोगकर्ताओं को वर्कस्टेशन पर लॉग इन करते समय केवल उपयोगकर्ता नाम और पासवर्ड दर्ज करना होगा; उपयोगकर्ताओं को एकाधिक क्लाइंट * – Yahia

+0

एक्सेस करते समय उन्हें कई बार फिर से दर्ज नहीं करना चाहिए, यही कारण है कि मुझे 'टोकन लाइफटाइम' और 'एसएसआईएलआईटीटाइम' पैरामीटर के साथ और अधिक प्रयोग की आवश्यकता है।यह संभव है कि उन्हें 1 में सेट करने से गलत व्यवहार होता है लेकिन उन्हें सेट करने के लिए, 20 मिनट यह सही तरीके से व्यवहार करेंगे। मुझे बस उम्मीद है। –

1

आप विंडोज आधारित एकीकृत प्रमाणीकरण से फॉर्म आधारित प्रमाणीकरण में एडीएफएस को बदलने का भी प्रयास कर सकते हैं। आपको शायद अभी भी ताजगी संपत्ति के साथ बंदर करना होगा, लेकिन अब आपके उपयोगकर्ताओं को अपने क्रेडेंशियल दर्ज करना होगा भले ही वे आपके विज्ञापन के समान नेटवर्क पर हों।

यह लेख यह बहुत बस बताते हैं:

http://social.technet.microsoft.com/wiki/contents/articles/1600.aspx

+0

टिप्पणी के लिए धन्यवाद। मैंने इसे स्पष्ट रूप से नहीं बताया है लेकिन हमारे एडीएफएस हमेशा फॉर्म ऑथ के लिए सेट होते हैं। –

0

यह काफी अजीब है कि TokenLifetime मान सेट काम नहीं किया है। article in MSDN टोकन लाइफटाइम मान असाइन करके - सीधे आगे की सेटिंग के रूप में टाइमआउट बताता है। मुझे यह जानने में दिलचस्पी है कि एमएसडीएन में वर्णित सेटिंग सही है या नहीं। अगर इससे मदद नहीं मिली है, तो उस लेख को संशोधित करने का सही समय है। उम्मीद है कि इस मुद्दे का सामना करने वाले लोगों के लिए एक बड़ी मदद होगी।

+1

इसके लिए धन्यवाद, भले ही सवाल थोड़ा पुराना हो। मुझे याद है कि, टोकन लाइफटाइम को 1 मिनट के लिए सेट करना अच्छा विचार नहीं था, लेकिन मुझे यह भी याद है कि 5 मिनट से अधिक के मान सही ढंग से काम करते हैं। –

+0

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