$lang['tuto'] = "ट्यूटोरियल"; ?>$lang['tuto'] = "ट्यूटोरियल"; ?>$lang['tuto'] = "ट्यूटोरियल"; ?> सेवा प्रदाता की

सेवा प्रदाता की निष्क्रियता के बाद एसएएमएल 2.0 सिंगल लॉग आउट सर्वोत्तम अभ्यास

सेवा प्रदाता की निष्क्रियता के बाद एसएएमएल 2.0 सिंगल लॉग आउट सर्वोत्तम अभ्यास
सेवा प्रदाता की निष्क्रियता के बाद एसएएमएल 2.0 सिंगल लॉग आउट सर्वोत्तम अभ्यास

सत्र समय समाप्ति के बाद एसएएमएल 2.0 सिंगल लॉग आउट को समझना

क्योंकि SAML 2.0 सिंगल साइन-ऑन (SSO) सिस्टम उपयोगकर्ताओं को क्रेडेंशियल्स के एक सेट का उपयोग करके विभिन्न अनुप्रयोगों में साइन इन करने की अनुमति देता है, उन्होंने उपयोगकर्ता प्रमाणीकरण को काफी सरल बना दिया है। लेकिन सिंगल लॉग आउट (एसएलओ) धारणा के साथ भी महत्वपूर्ण मुद्दे हैं, विशेष रूप से तब क्या होता है जब उपयोगकर्ता का सत्र सेवा प्रदाता (एसपी) पर समाप्त हो जाता है क्योंकि उन्होंने लॉग इन नहीं किया है। इस मामले में, पहचान प्रदाता को क्या करना चाहिए (आईडीपी) सत्र भी समाप्त?

एसएएमएल 2.0 के संदर्भ में सुरक्षित और कुशल पहुंच सुनिश्चित करने के लिए एसपी और आईडीपी के बीच सत्र प्रबंधन आवश्यक है। यह हमेशा स्पष्ट नहीं होता है कि जब एसपी सत्र समाप्त होता है तो उपयोगकर्ता को अभी भी आईडीपी से जुड़ा होना चाहिए, जिसका उसी आईडीपी से जुड़े अन्य ऐप्स पर प्रभाव पड़ सकता है। इससे प्रयोज्यता के साथ-साथ सुरक्षा पर भी सवाल उठता है।

इन सत्र टाइमआउट को संभालने के लिए एक स्पष्ट सर्वोत्तम अभ्यास कई व्यवसायों द्वारा स्थापित किया जाना चाहिए, विशेष रूप से वे जो Microsoft Entra जैसे इंटरफ़ेस का उपयोग करते हैं। क्या किसी एसपी के सत्र को केवल एसपी स्तर पर ही रोक देना बेहतर है, या क्या इसके परिणामस्वरूप एक एसएलओ भी होना चाहिए जो उपयोगकर्ता को उनके आईडीपी खाते से लॉग आउट कर दे?

सत्र टाइमआउट को संभालने और सुरक्षा और उपयोगिता दोनों की गारंटी देने के लिए सबसे कुशल तकनीकों को चित्रित करने के लिए वास्तविक दुनिया के उदाहरणों का उपयोग करते हुए, यह पेपर ऐसी स्थितियों में एसएएमएल 2.0 एसएलओ घटनाओं को संभालने के लिए मानक प्रथाओं और मानकों की जांच करता है।

आज्ञा उपयोग का उदाहरण
session() उपयोगकर्ता सत्रों को नियंत्रित करने के लिए एक्सप्रेस एप्लिकेशन में उपयोग किया गया। उदाहरण में, यह उपयोगकर्ता गतिविधि और सत्र टाइमआउट की निगरानी में सहायता करता है ताकि जरूरत पड़ने पर लॉगआउट तर्क को ट्रिगर किया जा सके।
maxAge वह समय-सीमा निर्दिष्ट करता है कि सत्र कुकी मान्य है। इस उदाहरण में, टाइमर 600000 मिलीसेकंड या 10 मिनट के बाद समाप्त होने के लिए सेट है, और एक लॉगआउट ईवेंट आरंभ करता है।
create_logout_request_url() जब सेवा प्रदाता सत्र समाप्त हो जाता है, तो इस SAML2 लाइब्रेरी विधि द्वारा बनाया गया एकल लॉग आउट (SLO) अनुरोध URL पहचान प्रदाता (IDP) को भेज दिया जाता है।
readFileSync() मुख्य फ़ाइलों और प्रमाणपत्रों को समकालिक रूप से पढ़ता है, जो SAML2 सेवा प्रदाता को स्थापित करने के लिए आवश्यक है। सेवा प्रदाता और पहचान प्रदाता के लिए सुरक्षित रूप से संचार करने के लिए ये प्रमाणपत्र आवश्यक हैं।
assert_endpoint उस URL को इंगित करता है, जिसका उपयोग सफल प्रमाणीकरण के बाद, पहचान प्रदाता SAML दावे को प्रसारित करने के लिए करेगा। ऐसा करने से, सेवा प्रदाता स्तर के उपयोगकर्ता प्रमाणीकरण की गारंटी होती है।
window.onload इस इवेंट का उपयोग फ्रंटएंड में सत्र निष्क्रियता टाइमर को रीसेट करने के लिए किया जाता है। यह सुनिश्चित करता है कि जब उपयोगकर्ता पहली बार प्रोग्राम लोड करता है, तो टाइमर फिर से शुरू हो जाता है।
onmousemove सत्र टाइमर को रीसेट करने के लिए, यह ईवेंट श्रोता किसी भी माउस गतिविधि का पता लगाता है। उपयोगकर्ता के व्यवहार पर नज़र रखने और आकस्मिक सत्र टाइमआउट से बचने के लिए यह आवश्यक है।
fetch() सत्र टाइमआउट के बाद, सर्वर पर एसिंक्रोनस रूप से एसएलओ अनुरोध भेजने के लिए उपयोग किया जाता है। पहचान प्रदाता से जुड़ने और उपयोगकर्ता को आईडीपी से लॉग आउट करने के लिए, यह बैकएंड लॉजिक को बंद कर देता है।
setTimeout() फ्रंटएंड कोड में यह फ़ंक्शन निष्क्रियता की पूर्व निर्धारित मात्रा के बाद सत्र टाइमआउट ईवेंट उत्पन्न करने का कारण बनता है। उपयोगकर्ता के व्यवहार पर नज़र रखने और सुरक्षा नियमों को लागू करने के लिए यह आवश्यक है।

एसएएमएल 2.0 सत्र टाइमआउट हैंडलिंग के साथ एकल लॉग आउट को अनुकूलित करना

का उपयोग करते हुए नोड.जे.एस और एक्सप्रेस, सिंगल लॉग आउट (एसएलओ) को संभालने के लिए बैकएंड स्क्रिप्ट उपयोगकर्ता सत्र समाप्ति को ट्रैक करने और सेवा प्रदाता (एसपी) और पहचान प्रदाता (आईडीपी) स्तरों पर लॉगआउट अनुक्रम शुरू करने की क्षमता पर केंद्रित है। एक्सप्रेस सत्रों का प्रबंधन इस तर्क के केंद्र में है। हम अपने उदाहरण में, निष्क्रियता की एक पूर्व निर्धारित मात्रा - दस मिनट के बाद सत्र को समाप्त करने के लिए सेट करके एक ट्रिगर बिंदु स्थापित करते हैं। जब सत्र समाप्त होता है, तो स्क्रिप्ट SAML 2.0 लॉगआउट अनुरोध शुरू करने के लिए `create_logout_request_url()} विधि का उपयोग करती है, जो तब IDP से जुड़ती है (इस मामले में, माइक्रोसॉफ्ट एंट्रा) उपयोगकर्ता सत्र को पूरी तरह समाप्त करने के लिए। यह यह गारंटी देकर सुरक्षा बढ़ाता है कि उपयोगकर्ता सिस्टम से पूरी तरह लॉग आउट हो गया है।

हम लोड करते हैं एसएएमएल प्रमाणपत्र और SP (MyApp) और IDP (Microsoft Entra) के बीच सुरक्षित संचार सक्षम करने के लिए `readFileSync()} कमांड का उपयोग करके एप्लिकेशन में कुंजियाँ डालें। लॉगआउट अनुरोध को प्रमाणित करके, ये प्रमाणपत्र अवैध लॉगआउट से बचाव करते हैं और गारंटी देते हैं कि संचार एन्क्रिप्टेड और पुष्टिकृत रहता है। उपयोगकर्ता को लॉगआउट अनुरोध URL जेनरेट होने के बाद भेजा जाता है, जहां आईडीपी लॉगआउट को संभालता है और, यदि आवश्यक हो, तो किसी भी संबंधित एप्लिकेशन में उपयोगकर्ता के सत्र को समाप्त करता है। मल्टी-एप्लिकेशन सिंगल साइन-ऑन (एसएसओ) इंस्टॉलेशन की सुरक्षा और अखंडता बनाए रखने के लिए इस दो-तरफा संचार की आवश्यकता होती है।

फ्रंट एंड पर वास्तविक समय में उपयोगकर्ता गतिविधियों पर नज़र रखने के लिए जावास्क्रिप्ट स्क्रिप्ट आवश्यक है। हर बार जब उपयोगकर्ता प्रोग्राम के साथ इंटरैक्ट करता है, तो हम `onmousemove} और `onkeypress` जैसे इवेंट श्रोताओं का उपयोग करके सत्र टाइमआउट को रीसेट करते हैं। एक टाइमर जो `setTimeout()` के साथ सेट किया गया था, उपयोगकर्ता को सचेत करता है और उपयोगकर्ता के निष्क्रिय होने पर स्वचालित रूप से उन्हें SP (MyApp) से लॉग आउट कर देता है। लॉगआउट के बाद, पहले कवर की गई SAML 2.0 लॉगआउट प्रक्रिया फ्रंटएंड स्क्रिप्ट द्वारा `fetch()` का उपयोग करके बैकएंड पर SLO अनुरोध भेजकर शुरू की जाती है। यह तकनीक सुनिश्चित करती है कि एसपी स्तर पर निष्क्रियता को तुरंत, सुरक्षित रूप से और बिना किसी असफलता के संबोधित किया जाए।

जब SAML 2.0 एकीकरण और सत्र प्रबंधन संयुक्त हैं, उपयोगकर्ता अनुभव निर्बाध है और सुरक्षा मानकों को बरकरार रखा गया है। निष्क्रियता के दौरान उपयोगकर्ता को अनुमति से अधिक समय तक प्रमाणित रहने से रोकने के लिए, सत्र टाइमआउट स्थानीय एसपी लॉगआउट और आईडीपी लॉगआउट दोनों को आरंभ करता है। हालांकि एसएएमएल 2.0 को सत्र टाइमआउट के संबंध में किसी विशेष आचरण की आवश्यकता नहीं है, इसे आम तौर पर एसएलओ शुरू करने के लिए सत्र समाप्ति का उपयोग करने के लिए सर्वोत्तम अभ्यास के रूप में स्वीकार किया जाता है। निष्क्रिय सत्रों को समाप्त करके, यह विभिन्न एसएसओ-कनेक्टेड प्लेटफार्मों पर सिंक्रनाइज़ लॉगआउट को सक्षम करके सुरक्षा और उपयोगकर्ता अनुभव के बीच संतुलन बनाता है।

सत्र टाइमआउट के साथ SAML 2.0 सिंगल लॉग आउट को संभालने के लिए Node.js और Express का उपयोग करना

Node.js और Express का उपयोग करके सेवा प्रदाता सत्र टाइमआउट के साथ SAML 2.0 SLO को प्रबंधित करने के लिए बैकएंड विधि। यह समाधान यह जांचने के लिए एसएएमएल अनुरोधों का उपयोग करता है कि क्या सत्र समाप्त हो गया है और पहचान प्रदाता स्तर पर एसएलओ शुरू करता है।

// Required modules for Node.js and SAML SSO
const express = require('express');
const session = require('express-session');
const saml2 = require('saml2-js');
const app = express();

// Service Provider (SP) setup
const sp = new saml2.ServiceProvider({
  entity_id: "http://myapp.com/metadata.xml",
  private_key: fs.readFileSync("./cert/sp-private-key.pem").toString(),
  certificate: fs.readFileSync("./cert/sp-certificate.pem").toString(),
  assert_endpoint: "http://myapp.com/assert"
});

// Identity Provider (IDP) setup
const idp = new saml2.IdentityProvider({
  sso_login_url: "https://login.microsoftonline.com/sso",
  sso_logout_url: "https://login.microsoftonline.com/logout",
  certificates: fs.readFileSync("./cert/idp-certificate.pem").toString()
});

// Session management
app.use(session({
  secret: 'mySecretKey',
  resave: false,
  saveUninitialized: true,
  cookie: { maxAge: 600000 } // Set session expiration time
}));

// Middleware to handle session timeout and SLO
app.use((req, res, next) => {
  if (req.session.expires && Date.now() > req.session.expires) {
    sp.create_logout_request_url(idp, {}, (err, logout_url) => {
      if (err) return res.status(500).send("Logout error");
      return res.redirect(logout_url); // Trigger SLO
    });
  } else {
    next(); // Continue if session is valid
  }
});

app.listen(3000, () => {
  console.log("Server running on port 3000");
});

SAML 2.0 SLO को संभालने के लिए जावास्क्रिप्ट फ्रंटएंड और आइडल टाइमआउट डिटेक्शन का उपयोग करना

फ्रंटएंड विधि में, उपयोगकर्ता की निष्क्रियता की निगरानी करने और सिंगल लॉग आउट (एसएलओ) शुरू करने के लिए वेनिला जावास्क्रिप्ट का उपयोग करके एक सत्र टाइमआउट का पता लगाया जाता है। यह सेवा प्रदाता को पहचान प्रदाता को एसएलओ अनुरोध जारी करने के लिए कहता है।

// Define variables for session timeout
let timeoutDuration = 600000; // 10 minutes
let timeoutTimer;

// Reset the timer on any user interaction
function resetTimer() {
  clearTimeout(timeoutTimer);
  timeoutTimer = setTimeout(triggerLogout, timeoutDuration);
}

// Trigger logout function
function triggerLogout() {
  alert("Session expired due to inactivity.");
  window.location.href = "/logout"; // Redirect to SP logout
}

// Monitor user actions
window.onload = resetTimer;
document.onmousemove = resetTimer;
document.onkeypress = resetTimer;

// SLO event triggered after logout
function sendSLORequest() {
  fetch('/api/slo', { method: 'POST' })
    .then(response => {
      if (response.ok) {
        console.log("SLO request sent to IDP");
      }
    })
    .catch(err => console.error("SLO request failed", err));
}

एसएएमएल 2.0 की खोज: एकल लॉग आउट और निष्क्रियता टाइमआउट

SAML 2.0 सिंगल लॉग आउट (SLO) पते कैसे निष्क्रियता सेवा प्रदाता (एसपी) स्तर पर प्रबंधन एक महत्वपूर्ण घटक है। यद्यपि यह स्पष्ट है कि एसपी पर मैन्युअल लॉगआउट के कारण पहचान प्रदाता (आईडीपी) भी लॉगआउट हो सकता है, निष्क्रियता के कारण सत्र का समय समाप्त होने से मामला जटिल हो जाता है। एसएएमएल 2.0 मानक स्पष्ट रूप से नहीं बताता है कि सत्र समाप्ति पर एसएलओ को कैसे संभाला जाना चाहिए। हालाँकि, यह सर्वोत्तम प्रथाओं को अपनाने की अनुमति देता है जो उपयोगकर्ता अनुभव और सुरक्षा में सुधार कर सकते हैं।

उदाहरण के लिए, निष्क्रियता के कारण SP से बंद होने के बाद भी, जो उपयोगकर्ता Microsoft Entra (IDP) के माध्यम से MyApp जैसे एप्लिकेशन में लॉग इन करते हैं, वे अक्सर IDP में लॉग इन रहते हैं। यदि उपयोगकर्ता को लगता है कि वे पूरी तरह से लॉग आउट हो गए हैं, जबकि समान एसएसओ का उपयोग करने वाले अन्य ऐप अभी भी चल रहे हैं, तो यह बढ़ सकता है सुरक्षा चिंताएं. आईडीपी स्तर पर एसपी टाइमआउट इवेंट की नकल करने और सिंक्रनाइज़ लॉगआउट की गारंटी देने के लिए एसएएमएल सत्र प्रबंधन स्थापित करना इस जोखिम को कम करने का एक तरीका है।

फ्रंटएंड कोड का निष्क्रिय पहचान तकनीकों का कार्यान्वयन एक अन्य कारक है। उपयोगकर्ता गतिविधि के लिए ईवेंट श्रोताओं का उपयोग करके सत्र समाप्त होने से पहले डेवलपर्स निष्क्रियता के समय का अनुमान लगा सकते हैं और उपयोगकर्ताओं को सचेत कर सकते हैं। इसका उपयोग करके, उपयोगकर्ता अपने सत्रों पर नियंत्रण रख सकते हैं और सुनिश्चित कर सकते हैं कि उनका एसएसओ सत्र लगातार नहीं चलता. एसएसओ-एकीकृत वातावरण में, डेवलपर्स इन कारकों के बीच संतुलन बनाकर सुरक्षा और उपयोगकर्ता सुविधा को बनाए रख सकते हैं।

एसएएमएल 2.0 एसएलओ और सत्र टाइमआउट के बारे में सामान्य प्रश्न

  1. जब सत्र का समय समाप्त हो जाता है तो सेवा प्रदाता स्तर पर क्या होता है?
  2. आमतौर पर, जब एसपी स्तर पर सत्र का समय समाप्त हो जाता है, तो उपयोगकर्ता प्रोग्राम से लॉग आउट हो जाता है। हालाँकि, यह इस बात पर निर्भर करता है कि सिस्टम कैसे स्थापित किया गया है, क्योंकि SAML 2.0 विनिर्देश के लिए यह आवश्यक नहीं है कि यह IDP पर SLO का कारण बने।
  3. क्या पहचान प्रदाता पर एक एसएलओ सेवा प्रदाता सत्र टाइमआउट द्वारा ट्रिगर किया जाना चाहिए?
  4. संगठन की नीति इसे नियंत्रित करती है। हालांकि एसएएमएल 2.0 इसे अनिवार्य नहीं करता है, लेकिन कई लोग सुरक्षा कारणों से एसपी सत्र समाप्त होने पर आईडीपी पर एसएलओ को बंद करना चुनते हैं।
  5. जब एक निष्क्रिय सत्र समाप्त हो जाता है, तो मैं एसएलओ कैसे करा सकता हूँ?
  6. सत्र समाप्ति का पता एक बैकएंड तंत्र के माध्यम से लगाया जा सकता है, जो फिर आरंभ करता है create_logout_request_url() आईडीपी को एसएलओ अनुरोध करने की प्रक्रिया।
  7. फ़्रंटएंड पर सत्र निष्क्रियता का पता कैसे लगाया जाता है?
  8. इवेंट श्रोता इसे पसंद करते हैं onmousemove और onkeypress आमतौर पर निष्क्रियता को ट्रैक करने के लिए उपयोग किया जाता है क्योंकि जब भी कोई उपयोगकर्ता एप्लिकेशन के साथ इंटरैक्ट करता है तो वे टाइमर को रीसेट कर देते हैं।
  9. एसपी से लॉग आउट करने के बाद, क्या आईडीपी सत्र खुला रखना सुरक्षित है?
  10. आईडीपी सत्र को खुला छोड़ने से सुरक्षा जोखिम उत्पन्न हो सकता है, खासकर यदि उपयोगकर्ता को लगता है कि उन्होंने पूरी तरह से चेक आउट कर लिया है। एसपी सत्र समाप्ति को दोहराने के लिए एसएलओ स्थापित करने की सलाह दी जाती है।

एसएएमएल 2.0 सत्र टाइमआउट प्रबंधन का समापन

एसएसओ सिस्टम में सुरक्षा बनाए रखने के लिए यह सुनिश्चित करना आवश्यक है कि पहचान प्रदाता और सेवा प्रदाता अपनी लॉगआउट प्रक्रियाओं को सिंक्रनाइज़ करें। भले ही एसएएमएल 2.0 यह अनिवार्य नहीं करता है कि सत्र टाइमआउट को कैसे प्रबंधित किया जाना चाहिए, बहुत सारे व्यवसाय एकल लॉगआउट को एक समान तरीके से संभालते हैं।

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

एसएएमएल 2.0 सर्वोत्तम प्रथाओं के लिए संदर्भ और स्रोत
  1. एसएएमएल 2.0 और सिंगल लॉग आउट मानकों और दिशानिर्देशों पर विस्तृत दस्तावेज़ आधिकारिक में पाया जा सकता है ओएसिस एसएएमएल 2.0 कोर विशिष्टता .
  2. Microsoft Entra और SSO तथा SLO के साथ इसके एकीकरण की जानकारी के लिए, आधिकारिक Microsoft दस्तावेज़ देखें Azure सक्रिय निर्देशिका और SAML .
  3. सत्र प्रबंधन तकनीकों के साथ उदाहरणों में उपयोग की गई Node.js SAML लाइब्रेरी को आगे खोजा जा सकता है SAML2-js लाइब्रेरी दस्तावेज़ीकरण .
  4. सिंगल साइन-ऑन और सत्र प्रबंधन को कॉन्फ़िगर करने में सर्वोत्तम प्रथाओं को समझने के लिए, लेख पर जाएँ एसएसओ सर्वोत्तम अभ्यास Auth0 द्वारा.