फिर से प्रमाणीकृत करें मैंने Sliding Sessions for WIF 4.5 में वर्णित अनुसार मेरे रिलीइंग पार्टी एप्लिकेशन में स्लाइडिंग सत्र लागू किए हैं। यह तब तक बढ़िया काम करता है जब तक यह जाता है, लेकिन एक समस्या है जो ऐसा लगता है कि कोई भी इस बारे में बात नहीं करता है।डब्ल्यूआईएफ स्लाइडिंग सत्र
जैसा कि लिंक किया गया ब्लॉग पोस्ट इंगित करता है, जब आरपी टोकन समाप्त हो जाता है, अगली बार एसटीएस से टोकन को फिर से जारी करने का अनुरोध किया जाता है। मान लीजिए कि एसटीएस सत्र का जीवनकाल आरपी के सत्र जीवनकाल से लंबा है, जो लगभग निश्चित रूप से मामला है यदि आप स्लाइडिंग सत्र लागू कर रहे हैं।
किसी भी घटना में, जो पूरी तरह से स्लाइडिंग सत्रों के पूरे बिंदु को हरा देता है।
आरपी सत्र की अवधि समाप्त होने पर क्या करना है, इसके बारे में कोई भी बात नहीं करता है। मैं चाहता हूं है, यदि आरपी सत्र का समय समाप्त होता है (आमतौर पर क्योंकि कोई 10 मिनट के लिए अपने डेस्क से दूर चला जाता है), तो मेरे एप्लिकेशन के लिए एसटीएस लॉगिन पेज पर रीडायरेक्ट करने के लिए है जहां उपयोगकर्ता फिर से प्रमाणीकृत कर सकता है, और उसके बाद रीडायरेक्ट किया जा सकता है उस पृष्ठ पर वापस मैंने अनुरोध किया था; या शायद उस पृष्ठ पर जिस पर मैंने अनुरोध किया था।
मुझे लगभग निश्चित है कि यह संभव है, लेकिन मुझे बिल्कुल नहीं पता कि यह कैसे किया जाता है।
यहाँ Global.asax से मेरे कोड है:
private const int InactivityTimeout = 5; // minutes
void SessionAuthenticationModule_SessionSecurityTokenReceived
(object sender, SessionSecurityTokenReceivedEventArgs e)
{
var now = DateTime.UtcNow;
var validFrom = e.SessionToken.ValidFrom;
var validTo = e.SessionToken.ValidTo;
double halfSpan = (validTo - validFrom).TotalMinutes/2;
if (validFrom.AddMinutes(halfSpan) < now && now < validTo)
{
// add more time
var sam = sender as SessionAuthenticationModule;
e.SessionToken = sam.CreateSessionSecurityToken(
e.SessionToken.ClaimsPrincipal,
e.SessionToken.Context,
now,
now.AddMinutes(InactivityTimeout),
e.SessionToken.IsPersistent);
e.ReissueCookie = true;
}
else
{
// re-authenticate with STS
}
}
मेरे सवालों का:
else
खंड फिर से प्रमाणीकरण तर्क डाल करने के लिए उचित जगह है?- यदि ऐसा है, तो कृपया एक उदाहरण प्रदान करें, 'क्योंकि मुझे कोई जानकारी नहीं है।
- यदि # 1 का उत्तर नहीं है, तो क्या मुझे एक अलग घटना की सदस्यता लेने की आवश्यकता है जो मुझे बताएगी "अरे, आपका सत्र सुरक्षा टोकन समाप्त हो गया है!"
उत्तर के लिए धन्यवाद। मैं सत्र जीवनकाल को सिंक नहीं करना चाहता क्योंकि इससे उपयोगकर्ता को हर 10 मिनट में पुनः प्रमाणित करने के लिए मजबूर किया जाएगा। कल्पना करें कि अगर आप विजुअल स्टूडियो में काम कर रहे हैं तो आपको ऐसा करना होगा। मैं चाहता हूं कि यह मेरे विंडोज मशीन की तरह काम करे: मेरा सत्र तब तक वैध रहता है जब तक मैं कंप्यूटर का उपयोग कर रहा हूं। लेकिन अगर मैं 5 मिनट के लिए निष्क्रिय हूं, तो यह मेरे वर्कस्टेशन को लॉक करता है और मुझे पुनः प्रमाणीकरण करना होगा। संघीय साइनआउट काम कर सकता है, जब तक कि मैं उस पृष्ठ पर वापस लौटाया जा सकता जहां मैंने छोड़ा था। मैं इसे आज़मा दूंगा। –
मुझे नहीं लगता कि उपयोगकर्ता को आरपी पर स्लाइडिंग सत्र लागू करने पर हर 10 मिनट में फिर से प्रमाणीकरण करना होगा। – klings
यदि मैंने अनुशंसित एसटीएस पर सत्र जीवनकाल को 10 मिनट तक सेट किया है, तो एसटीएस टोकन 10 मिनट के बाद समाप्त हो जाएगा। आरपी एसकेएस टोकन की अनुमति से लंबे समय तक टोकन के जीवनकाल का विस्तार नहीं कर सकता है। जब तक मैंने आपके द्वारा लिखी कुछ गलत समझा नहीं? –