$lang['tuto'] = "سبق"; ?>$lang['tuto'] = "سبق"; ?>$lang['tuto'] = "سبق"; ?> SAML 2.0 سنگل لاگ آؤٹ سروس پرووائیڈر

SAML 2.0 سنگل لاگ آؤٹ سروس پرووائیڈر کی غیرفعالیت کے بعد بہترین پریکٹسز

SAML 2.0 سنگل لاگ آؤٹ سروس پرووائیڈر کی غیرفعالیت کے بعد بہترین پریکٹسز
SAML 2.0 سنگل لاگ آؤٹ سروس پرووائیڈر کی غیرفعالیت کے بعد بہترین پریکٹسز

سیشن ٹائم آؤٹ کے بعد SAML 2.0 سنگل لاگ آؤٹ کو سمجھنا

چونکہ SAML 2.0 سنگل سائن آن (SSO) سسٹم صارفین کو اسناد کے ایک سیٹ کا استعمال کرتے ہوئے مختلف ایپلی کیشنز میں سائن ان کرنے کی اجازت دیتے ہیں، اس لیے ان کے پاس صارف کی توثیق کو کافی حد تک آسان بنایا گیا ہے۔ لیکن سنگل لاگ آؤٹ (SLO) تصور کے ساتھ بھی اہم مسائل ہیں، خاص طور پر اس حوالے سے کہ جب صارف کا سیشن سروس پرووائیڈر (SP) پر ختم ہو جاتا ہے کیونکہ اس نے لاگ ان نہیں کیا ہے۔ اس صورت میں، شناخت فراہم کرنے والے کو (IDP) سیشن بھی ختم؟

SAML 2.0 کے تناظر میں محفوظ اور موثر رسائی کو یقینی بنانے کے لیے SP اور IDP کے درمیان سیشن کا انتظام ضروری ہے۔ یہ ہمیشہ واضح نہیں ہوتا ہے کہ SP سیشن کب ختم ہوتا ہے اگر صارف کو اب بھی IDP سے منسلک ہونا چاہیے، جس کا اثر دوسری ایپس پر پڑ سکتا ہے جو اسی IDP سے منسلک ہیں۔ یہ استعمال کے ساتھ ساتھ سیکورٹی کے بارے میں سوالات اٹھاتا ہے.

ان سیشن ٹائم آؤٹ کو سنبھالنے کے لیے ایک واضح بہترین عمل بہت سے کاروباروں کو قائم کرنے کی ضرورت ہے، خاص طور پر وہ جو مائیکروسافٹ انٹرا جیسے انٹرفیس استعمال کرتے ہیں۔ کیا SP کے سیشن کے لیے یہ بہتر ہے کہ وہ صرف SP سطح پر ہی رک جائے، یا اس کا نتیجہ بھی SLO کی صورت میں نکلنا چاہیے جو صارف کو اپنے IDP اکاؤنٹ سے لاگ آؤٹ کر دے؟

حقیقی دنیا کی مثالوں کا استعمال کرتے ہوئے سیشن ٹائم آؤٹ کو ہینڈل کرنے اور سیکیورٹی اور استعمال دونوں کی ضمانت دینے کے لیے انتہائی موثر تکنیکوں کو واضح کرنے کے لیے، یہ مقالہ ایسے حالات میں SAML 2.0 SLO ایونٹس سے نمٹنے کے لیے معیاری طریقوں اور معیارات کی جانچ کرتا ہے۔

حکم استعمال کی مثال
session() ایکسپریس ایپلی کیشن میں صارف کے سیشن کو کنٹرول کرنے کے لیے استعمال کیا جاتا ہے۔ مثال کے طور پر، یہ صارف کی سرگرمی اور سیشن کے ٹائم آؤٹ کی نگرانی میں مدد کرتا ہے تاکہ ضرورت پڑنے پر لاگ آؤٹ منطق کو متحرک کیا جا سکے۔
maxAge وقت کا تعین کرتا ہے کہ سیشن کوکی درست ہے۔ اس مثال میں، ٹائمر 600000 ملی سیکنڈز، یا 10 منٹ کے بعد ختم ہونے کے لیے مقرر کیا گیا ہے، اور ایک لاگ آؤٹ ایونٹ شروع کرنا ہے۔
create_logout_request_url() جب سروس پرووائیڈر کا سیشن ختم ہو جاتا ہے، تو SAML2 لائبریری کے اس طریقہ سے تخلیق کردہ سنگل لاگ آؤٹ (SLO) درخواست کا یو آر ایل شناختی فراہم کنندہ (IDP) کو بھیج دیا جاتا ہے۔
readFileSync() کلیدی فائلوں اور سرٹیفکیٹس کو مطابقت پذیری سے پڑھتا ہے، جو SAML2 سروس پرووائیڈر کو ترتیب دینے کے لیے ضروری ہے۔ سروس فراہم کرنے والے اور شناخت فراہم کرنے والے کے لیے محفوظ طریقے سے بات چیت کرنے کے لیے، یہ سرٹیفیکیشنز ضروری ہیں۔
assert_endpoint یو آر ایل کی نشاندہی کرتا ہے کہ، کامیاب تصدیق کے بعد، شناخت فراہم کنندہ SAML دعوی کو منتقل کرنے کے لیے استعمال کرے گا۔ ایسا کرنے سے، صارف کی توثیق کی خدمت فراہم کرنے والے کی سطح کی ضمانت دی جاتی ہے۔
window.onload یہ ایونٹ فرنٹ اینڈ میں سیشن کے غیرفعالیت کے ٹائمر کو دوبارہ ترتیب دینے کے لیے استعمال کیا جاتا ہے۔ یہ یقینی بناتا ہے کہ جب صارف پہلی بار پروگرام لوڈ کرتا ہے، تو ٹائمر شروع ہو جاتا ہے۔
onmousemove سیشن ٹائمر کو دوبارہ ترتیب دینے کے لیے، یہ ایونٹ سننے والا ماؤس کی کسی حرکت کا پتہ لگاتا ہے۔ یہ صارف کے رویے پر نظر رکھنے اور سیشن کے حادثاتی وقت ختم ہونے سے بچنے کے لیے ضروری ہے۔
fetch() سیشن ٹائم آؤٹ کے بعد، سرور کو غیر مطابقت پذیر طور پر ایک SLO درخواست بھیجنے کے لیے استعمال کیا جاتا ہے۔ شناخت فراہم کرنے والے کے ساتھ جڑنے اور صارف کو IDP سے لاگ آؤٹ کرنے کے لیے، یہ بیک اینڈ لاجک کو سیٹ کرتا ہے۔
setTimeout() فرنٹ اینڈ کوڈ میں یہ فنکشن سیشن ٹائم آؤٹ ایونٹ کو غیرفعالیت کی پہلے سے متعین مقدار کے بعد ہونے کا سبب بنتا ہے۔ یہ صارف کے رویے پر نظر رکھنے اور حفاظتی ضوابط کو نافذ کرنے کے لیے ضروری ہے۔

SAML 2.0 سیشن ٹائم آؤٹ ہینڈلنگ کے ساتھ سنگل لاگ آؤٹ کو بہتر بنانا

استعمال کرنا Node.js اور ایکسپریس، سنگل لاگ آؤٹ (SLO) کو ہینڈل کرنے کے لیے بیک اینڈ اسکرپٹ صارف کے سیشن کی میعاد کو ٹریک کرنے اور سروس فراہم کرنے والے (SP) اور شناخت فراہم کرنے والے (IDP) کی سطحوں پر لاگ آؤٹ ترتیب شروع کرنے کی صلاحیت پر مرکوز ہے۔ ایکسپریس سیشنز کا انتظام اس استدلال کے مرکز میں ہے۔ ہم اپنی مثال میں، پہلے سے طے شدہ غیرفعالیت کے دس منٹ کے بعد سیشن کو ختم کرنے کے لیے سیٹ کرکے ایک ٹرگر پوائنٹ قائم کرتے ہیں۔ سیشن ختم ہونے پر، اسکرپٹ SAML 2.0 لاگ آؤٹ کی درخواست شروع کرنے کے لیے `create_logout_request_url()} طریقہ استعمال کرتی ہے، جو پھر IDP سے جڑ جاتی ہے (اس صورت میں، مائیکروسافٹ انٹرا) صارف کے سیشن کو مکمل طور پر ختم کرنے کے لیے۔ یہ اس بات کی ضمانت دے کر سیکورٹی کو بڑھاتا ہے کہ صارف سسٹم سے مکمل طور پر لاگ آؤٹ ہو چکا ہے۔

ہم لوڈ SAML سرٹیفکیٹ اور SP (MyApp) اور IDP (Microsoft Entra) کے درمیان محفوظ مواصلت کو فعال کرنے کے لیے `readFileSync()} کمانڈ کا استعمال کرتے ہوئے ایپلی کیشن میں کیز۔ لاگ آؤٹ کی درخواست کی توثیق کرکے، یہ سرٹیفکیٹس غیر قانونی لاگ آؤٹس کے خلاف حفاظت کرتے ہیں اور اس بات کی ضمانت دیتے ہیں کہ مواصلت خفیہ اور تصدیق شدہ رہے گی۔ صارف کو لاگ آؤٹ کی درخواست یو آر ایل کے تیار ہونے کے بعد بھیجا جاتا ہے، جہاں IDP لاگ آؤٹ کو ہینڈل کرتا ہے اور اگر ضرورت ہو تو، کسی بھی متعلقہ ایپلی کیشنز میں صارف کا سیشن ختم کر دیتا ہے۔ ملٹی ایپلیکیشن سنگل سائن آن (SSO) تنصیبات کی سلامتی اور سالمیت کو برقرار رکھنے کے لیے اس دو طرفہ مواصلات کی ضرورت ہوتی ہے۔

JavaScript اسکرپٹ سامنے والے سرے پر حقیقی وقت میں صارف کی سرگرمیوں کو ٹریک کرنے کے لیے ضروری ہے۔ جب بھی صارف پروگرام کے ساتھ تعامل کرتا ہے، ہم ایونٹ کے سامعین جیسے `onmousemove} اور `onkeypress` کا استعمال کر کے سیشن کا ٹائم آؤٹ دوبارہ ترتیب دیتے ہیں۔ ایک ٹائمر جو `setTimeout()` کے ساتھ سیٹ کیا گیا تھا صارف کو الرٹ کرتا ہے اور صارف کے بیکار ہونے پر انہیں SP (MyApp) سے خود بخود لاگ آؤٹ کر دیتا ہے۔ لاگ آؤٹ کے بعد، SAML 2.0 لاگ آؤٹ کا عمل جو پہلے احاطہ کرتا تھا فرنٹ اینڈ اسکرپٹ کے ذریعے 'fetch()' کا استعمال کرتے ہوئے بیک اینڈ کو SLO درخواست بھیج کر شروع کیا جاتا ہے۔ یہ تکنیک اس بات کو یقینی بناتی ہے کہ SP سطح پر غیرفعالیت کو فوری، محفوظ طریقے سے اور بغیر کسی ناکامی کے حل کیا جائے۔

جب SAML 2.0 انضمام اور سیشن کا انتظام مشترکہ ہیں، صارف کا تجربہ ہموار ہے اور حفاظتی معیارات کو برقرار رکھا گیا ہے۔ غیرفعالیت کے دوران صارف کو اجازت سے زیادہ دیر تک تصدیق شدہ رہنے سے روکنے کے لیے، سیشن کا ٹائم آؤٹ مقامی SP لاگ آؤٹ اور IDP لاگ آؤٹ دونوں کو شروع کرتا ہے۔ اگرچہ SAML 2.0 کو سیشن ٹائم آؤٹ کے حوالے سے کسی خاص طرز عمل کی ضرورت نہیں ہے، لیکن SLO شروع کرنے کے لیے سیشن کی میعاد ختم ہونے کا استعمال کرنا عام طور پر ایک بہترین عمل کے طور پر قبول کیا جاتا ہے۔ بیکار سیشنز کو ختم کر کے، یہ SSO سے منسلک مختلف پلیٹ فارمز پر مطابقت پذیر لاگ آؤٹس کو فعال کر کے سیکورٹی اور صارف کے تجربے کے درمیان توازن قائم کرتا ہے۔

سیشن ٹائم آؤٹ کے ساتھ SAML 2.0 سنگل لاگ آؤٹ کو ہینڈل کرنے کے لیے Node.js اور Express کا استعمال

Node.js اور Express کا استعمال کرتے ہوئے سروس پرووائیڈر سیشن ٹائم آؤٹ کے ساتھ SAML 2.0 SLO کے انتظام کے لیے بیک اینڈ طریقہ۔ یہ حل یہ چیک کرنے کے لیے SAML درخواستوں کا استعمال کرتا ہے کہ آیا سیشن ختم ہو گیا ہے اور شناخت فراہم کرنے والے کی سطح پر 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 کو ہینڈل کرنے کے لیے JavaScript فرنٹ اینڈ اور آئیڈل ٹائم آؤٹ ڈٹیکشن کا استعمال

فرنٹ اینڈ طریقہ میں، ونیلا جاوا اسکرپٹ کا استعمال کرتے ہوئے صارف کی غیرفعالیت پر نظر رکھنے اور سنگل لاگ آؤٹ (SLO) شروع کرنے کے ذریعے سیشن کے ٹائم آؤٹ کا پتہ لگایا جاتا ہے۔ یہ سروس پرووائیڈر سے کہتا ہے کہ وہ شناختی فراہم کنندہ کو 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));
}

SAML 2.0 کو دریافت کرنا: سنگل لاگ آؤٹ اور غیرفعالیت کا ٹائم آؤٹ

SAML 2.0 سنگل لاگ آؤٹ (SLO) کیسے ایڈریس کرتا ہے۔ غیرفعالیت سروس پرووائیڈر (SP) کی سطح پر انتظام کرنے کے لیے ایک اہم جز ہے۔ اگرچہ یہ واضح ہے کہ SP میں دستی لاگ آؤٹ سے شناخت فراہم کرنے والے (IDP) کے لاگ آؤٹ کا بھی سبب بننا چاہیے، لیکن غیرفعالیت کی وجہ سے سیشن کا ٹائم آؤٹ معاملات کو پیچیدہ بنا دیتا ہے۔ SAML 2.0 معیار واضح طور پر یہ نہیں بتاتا کہ سیشن کی میعاد ختم ہونے پر SLO کو کس طرح ہینڈل کیا جانا چاہیے۔ تاہم، یہ بہترین طریقوں کو اپنانے کی اجازت دیتا ہے جو صارف کے تجربے اور سلامتی کو بہتر بنا سکتے ہیں۔

مثال کے طور پر، غیرفعالیت کی وجہ سے ایس پی سے بند ہونے کے بعد بھی، وہ صارفین جو مائیکروسافٹ انٹرا (IDP) کے ذریعے مائی ایپ جیسی ایپلی کیشن میں لاگ ان ہوتے ہیں اکثر IDP میں لاگ ان رہتے ہیں۔ اگر صارف کو یقین ہے کہ وہ مکمل طور پر لاگ آؤٹ ہو چکے ہیں جبکہ اسی SSO کو استعمال کرنے والی دوسری ایپس اب بھی چل رہی ہیں، تو یہ بڑھ سکتا ہے۔ سیکورٹی خدشات. IDP کی سطح پر SP ٹائم آؤٹ ایونٹ کی نقل کرنے کے لیے SAML سیشن مینجمنٹ کو ترتیب دینا اور مطابقت پذیر لاگ آؤٹس کی ضمانت دینا اس خطرے کو کم کرنے کا ایک طریقہ ہے۔

فرنٹ اینڈ کوڈ کا بیکار پتہ لگانے کی تکنیکوں کا نفاذ ایک اور عنصر ہے۔ ڈویلپرز غیرفعالیت کے اوقات کا اندازہ لگا سکتے ہیں اور صارف کی سرگرمی کے لیے ایونٹ سننے والوں کا استعمال کر کے سیشن ختم ہونے سے پہلے صارفین کو الرٹ کر سکتے ہیں۔ اس کا استعمال کرتے ہوئے، صارفین اپنے سیشنز پر کنٹرول رکھ سکتے ہیں اور اس بات کو یقینی بنا سکتے ہیں کہ ان کے ایس ایس او سیشن مسلسل نہیں چلتا. SSO سے مربوط ماحول میں، ڈویلپرز ان عوامل کے درمیان توازن قائم کر کے سلامتی اور صارف کے آرام کو محفوظ رکھ سکتے ہیں۔

SAML 2.0 SLO اور سیشن ٹائم آؤٹ کے بارے میں عام سوالات

  1. سیشن کا وقت ختم ہونے پر سروس پرووائیڈر کی سطح پر کیا ہوتا ہے؟
  2. عام طور پر، SP سطح پر سیشن کا وقت ختم ہونے پر صارف پروگرام سے لاگ آؤٹ ہو جاتا ہے۔ یہ اس بات پر منحصر ہے کہ سسٹم کو کیسے ترتیب دیا گیا ہے، حالانکہ، جیسا کہ SAML 2.0 spec کی ضرورت نہیں ہے کہ یہ IDP میں SLO کا سبب بنے۔
  3. کیا سروس پرووائیڈر کے سیشن کے وقت ختم ہونے سے شناخت فراہم کرنے والے پر SLO کو متحرک کیا جانا چاہیے؟
  4. تنظیم کی پالیسی اس پر حکومت کرتی ہے۔ اگرچہ SAML 2.0 اس کا حکم نہیں دیتا، بہت سے لوگ سیکورٹی وجوہات کی بنا پر SP سیشن ختم ہونے پر IDP میں SLO کو بند کرنے کا انتخاب کرتے ہیں۔
  5. جب ایک غیر فعال سیشن ختم ہو جاتا ہے، میں SLO کیسے کر سکتا ہوں؟
  6. سیشن کی میعاد ختم ہونے کا پتہ ایک بیک اینڈ میکانزم کے ذریعے لگایا جا سکتا ہے، جو پھر شروع کرتا ہے۔ create_logout_request_url() IDP کو SLO کی درخواست کرنے کا طریقہ کار۔
  7. فرنٹ اینڈ پر سیشن کی غیرفعالیت کا پتہ کیسے چلتا ہے؟
  8. تقریب کے سامعین پسند کرتے ہیں۔ onmousemove اور onkeypress عام طور پر غیرفعالیت کو ٹریک کرنے کے لیے استعمال کیا جاتا ہے کیونکہ جب بھی صارف ایپلیکیشن کے ساتھ تعامل کرتا ہے تو وہ ٹائمر کو دوبارہ ترتیب دیتے ہیں۔
  9. SP سے لاگ آؤٹ ہونے کے بعد، کیا IDP کا سیشن کھلنا محفوظ ہے؟
  10. IDP سیشن کو کھلا چھوڑنے سے سیکورٹی رسک پیدا ہو سکتا ہے، خاص طور پر اگر صارف کو یقین ہو کہ اس نے مکمل طور پر چیک آؤٹ کر لیا ہے۔ ایس پی سیشن کی میعاد ختم ہونے کی نقل تیار کرنے کے لیے SLO ترتیب دینے کا مشورہ دیا جاتا ہے۔

SAML 2.0 سیشن ٹائم آؤٹ مینجمنٹ کو لپیٹنا

SSO سسٹم میں سیکورٹی کو برقرار رکھنے کے لیے اس بات کو یقینی بنانے کی ضرورت ہوتی ہے کہ شناخت فراہم کنندہ اور سروس فراہم کنندہ اپنے لاگ آؤٹ کے عمل کو ہم آہنگ کریں۔ اگرچہ SAML 2.0 یہ حکم نہیں دیتا ہے کہ سیشن ٹائم آؤٹ کو کس طرح ہینڈل کیا جانا چاہئے، بہت سارے کاروبار ایک ہی لاگ آؤٹ کو یکساں طریقے سے ہینڈل کرتے ہیں۔

یہ مشورہ دیا جاتا ہے کہ سیکیورٹی کو بہتر بنانے کے لیے ہر بار سروس پرووائیڈر کا سیشن ختم ہونے پر ایک SLO درخواست بھیجیں۔ یہ یقینی بناتا ہے کہ صارف نے بہت سے پلیٹ فارمز پر ناپسندیدہ رسائی سے گریز کرتے ہوئے شناخت فراہم کرنے والے کے ساتھ ساتھ ایپلیکیشن سے لاگ آؤٹ کیا ہے۔

SAML 2.0 بہترین طریقوں کے حوالے اور ذرائع
  1. SAML 2.0 اور سنگل لاگ آؤٹ معیارات اور رہنما خطوط پر تفصیلی دستاویزات آفیشل میں مل سکتی ہیں۔ OASIS SAML 2.0 بنیادی تفصیلات .
  2. مائیکروسافٹ انٹرا اور اس کے ایس ایس او اور ایس ایل او کے ساتھ انضمام کے بارے میں بصیرت کے لیے، مائیکروسافٹ کے آفیشل دستاویزات کو دیکھیں Azure ایکٹو ڈائریکٹری اور SAML .
  3. مثالوں میں استعمال ہونے والی Node.js SAML لائبریری، سیشن مینجمنٹ کی تکنیکوں کے ساتھ، اس پر مزید دریافت کی جا سکتی ہے۔ SAML2-js لائبریری دستاویزات .
  4. سنگل سائن آن اور سیشن مینجمنٹ کو ترتیب دینے کے بہترین طریقوں کو سمجھنے کے لیے، پر مضمون ملاحظہ کریں۔ SSO کے بہترین طرز عمل بذریعہ Auth0۔