SAML 2.0 egyszeri kijelentkezés – bevált módszerek a szolgáltató inaktivitása után

SAML 2.0 egyszeri kijelentkezés – bevált módszerek a szolgáltató inaktivitása után
SAML 2.0 egyszeri kijelentkezés – bevált módszerek a szolgáltató inaktivitása után

A SAML 2.0 egyszeri kijelentkezése a munkamenet időtúllépése után

Mivel a SAML 2.0 egyszeri bejelentkezési (SSO) rendszerek lehetővé teszik a felhasználók számára, hogy egyetlen hitelesítési adatkészlettel bejelentkezzenek különböző alkalmazásokba, jelentősen leegyszerűsítették a felhasználói hitelesítést. De jelentős problémák is vannak az egyszeri kijelentkezés (SLO) fogalmával kapcsolatban, különösen azzal kapcsolatban, hogy mi történik, amikor a felhasználó munkamenete lejár egy szolgáltatónál (SP), mivel nem jelentkezett be. Ebben az esetben az Identity Provider (IDP) munkamenet vége is?

Az SP és az IDP közötti munkamenet-kezelés elengedhetetlen a biztonságos és hatékony hozzáférés biztosításához az SAML 2.0 kontextusában. Nem mindig nyilvánvaló, hogy egy SP-munkamenet véget ér, ha a felhasználónak továbbra is csatlakoznia kell az IDP-hez, ami hatással lehet más alkalmazásokra is, amelyek ugyanahhoz az IDP-hez vannak kapcsolva. Ez kérdéseket vet fel a használhatósággal és a biztonsággal kapcsolatban is.

Sok vállalkozásnak egyértelmű bevált gyakorlatot kell kialakítania ezen munkamenet-időtúllépések kezelésére, különösen azoknak, amelyek olyan felületeket használnak, mint a Microsoft Entra. Jobb, ha egy SP munkamenet egyszerűen SP szinten áll le, vagy egy olyan SLO-t is kell eredményeznie, amely kijelentkezteti a felhasználót az IDP-fiókjából?

Valós példákon keresztül szemlélteti a munkamenet-időtúllépések kezelésének leghatékonyabb technikáit, valamint garantálja a biztonságot és a használhatóságot, ez a cikk megvizsgálja a SAML 2.0 SLO események ilyen helyzetekben történő kezelésének szokásos gyakorlatait és szabványait.

Parancs Használati példa
session() Az Express alkalmazásban a felhasználói munkamenetek vezérlésére használható. A példában segít a felhasználói tevékenység és a munkamenet-időtúllépések figyelésében, így szükség esetén a kijelentkezési logika aktiválható.
maxAge Meghatározza azt az időtartamot, ameddig a munkamenet cookie érvényes. Ebben az esetben az időzítő úgy van beállítva, hogy 600 000 ezredmásodperc vagy 10 perc után lejár, és kijelentkezési eseményt kezdeményez.
create_logout_request_url() Amikor a szolgáltatói munkamenet véget ér, az ezzel a SAML2 könyvtári metódussal létrehozott egyszeri kijelentkezési (SLO) kérés URL-címét továbbítja az Identity Provider (IDP) felé.
readFileSync() Szinkronban olvassa be a kulcsfájlokat és a tanúsítványokat, ami az SAML2 szolgáltató beállításához szükséges. Ahhoz, hogy a Szolgáltató és az Identitásszolgáltató biztonságosan kommunikálhasson, ezekre a tanúsítványokra van szükség.
assert_endpoint Azt az URL-címet jelöli, amelyet a sikeres hitelesítést követően az identitásszolgáltató az SAML-érvényesítés továbbítására fog használni. Ezzel garantált a Szolgáltatói szintű felhasználói hitelesítés.
window.onload Ez az esemény a munkamenet inaktivitási időzítőjének visszaállítására szolgál a kezelőfelületen. Biztosítja, hogy amikor a felhasználó először tölti be a programot, az időzítő elölről induljon.
onmousemove A munkamenet-időzítő visszaállításához ez az eseményfigyelő minden egérmozgást észlel. Ez elengedhetetlen a felhasználói viselkedés figyelemmel kíséréséhez és a véletlen munkamenet-időtúllépések elkerüléséhez.
fetch() Egy SLO kérés aszinkron küldésére szolgál a munkamenet időtúllépése után a szervernek. Az Identity Providerhez való kapcsolódás és a felhasználó IDP-ből való kijelentkezése érdekében elindítja a háttér logikát.
setTimeout() Ez a funkció a frontend kódban azt okozza, hogy a munkamenet időtúllépése az előre meghatározott mennyiségű inaktivitás után következik be. Ez elengedhetetlen a felhasználói viselkedés figyelemmel kíséréséhez és a biztonsági előírások végrehajtásához.

Az egyszeri kijelentkezés optimalizálása SAML 2.0 munkamenet-időtúllépés-kezeléssel

Használata Node.js és Express, az egyszeri kijelentkezés (SLO) kezelésére szolgáló háttérszkript a felhasználói munkamenet lejártának nyomon követésére és a kijelentkezési sorozat kezdeményezésére a szolgáltatói (SP) és az identitásszolgáltatói (IDP) szinten. Ennek az érvelésnek a középpontjában az expressz munkamenetek kezelése áll. A trigger pontot úgy határozzuk meg, hogy a munkamenetet előre meghatározott mennyiségű tétlenség – példánkban tíz perc – után fejezzük be. Amikor a munkamenet véget ér, a szkript a `create_logout_request_url()} metódus használatával elindít egy SAML 2.0 kijelentkezési kérelmet, amely ezután csatlakozik az IDP-hez (ebben az esetben Microsoft Entra) a felhasználói munkamenet teljes befejezéséhez. Ez növeli a biztonságot azáltal, hogy garantálja, hogy a felhasználó teljesen kijelentkezett a rendszerből.

Rakodunk SAML tanúsítványok és a `readFileSync()} paranccsal kulcsoljon be az alkalmazásba, hogy lehetővé tegye a biztonságos kommunikációt az SP (MyApp) és az IDP (Microsoft Entra) között. A kijelentkezési kérelem hitelesítésével ezek a tanúsítványok védelmet nyújtanak az illegális kijelentkezésekkel szemben, és garantálják, hogy a kommunikáció titkosított és megerősített marad. A felhasználó a kijelentkezési kérés URL-címére kerül annak létrehozása után, ahol az IDP kezeli a kijelentkezést, és szükség esetén leállítja a felhasználó munkamenetét a kapcsolódó alkalmazások között. A többalkalmazásos egyszeri bejelentkezési (SSO) telepítések biztonságának és integritásának fenntartásához szükség van erre a kétirányú kommunikációra.

A JavaScript-szkript elengedhetetlen a felhasználói tevékenységek valós idejű nyomon követéséhez a kezelőfelületen. Minden alkalommal, amikor a felhasználó interakcióba lép a programmal, visszaállítjuk a munkamenet időtúllépését eseményfigyelők használatával, például `onmousemove} és `onkeypress`. A „setTimeout()” paraméterrel beállított időzítő figyelmezteti a felhasználót, és automatikusan kijelentkezi az SP-ből (MyApp), amikor a felhasználó tétlen lesz. A kijelentkezést követően a korábban lefedett SAML 2.0 kijelentkezési folyamat úgy indul el, hogy a frontend szkript SLO kérést küld a háttérnek a `fetch() segítségével. Ez a technika biztosítja, hogy az SP-szintű inaktivitást azonnal, biztonságosan és hibamentesen kezeljük.

Amikor a SAML 2.0 integráció és munkamenet menedzsment kombinálják, a felhasználói élmény zökkenőmentes, és betartják a biztonsági szabványokat. Annak elkerülése érdekében, hogy a felhasználó a megengedettnél hosszabb ideig maradjon hitelesített inaktivitás közben, a munkamenet időtúllépése kezdeményezi a helyi SP-kijelentkezést és az IDP-kijelentkezést is. Bár a SAML 2.0 nem igényel különösebb magatartást a munkamenet-időtúllépésekkel kapcsolatban, általánosan elfogadott, hogy a munkamenet lejáratát használja az SLO kezdeményezésére. A tétlen munkamenetek leállításával egyensúlyt teremt a biztonság és a felhasználói élmény között azáltal, hogy lehetővé teszi a szinkronizált kijelentkezéseket a különböző SSO-hoz kapcsolódó platformokon.

Node.js és Express használata a SAML 2.0 egyszeri kijelentkezés kezeléséhez munkamenet időtúllépéssel

Háttérrendszeri módszer SAML 2.0 SLO kezelésére a szolgáltatói munkamenet-időkorlátokkal a Node.js és Express használatával. Ez a megoldás SAML-kérések segítségével ellenőrzi, hogy a munkamenet lejárt-e, és kezdeményezi az SLO-t az identitásszolgáltató szintjén.

// 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");
});

JavaScript Frontend és Idle Timeout Detection használata a SAML 2.0 SLO kezelésére

Egy frontend metódusban a munkamenet időtúllépését a vanilla JavaScript használatával észleli a felhasználói inaktivitás figyelése és az egyszeri kijelentkezés (SLO) kezdeményezése. Ez arra utasítja a Szolgáltatót, hogy küldjön SLO kérést az Identitásszolgáltatónak.

// 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));
}

A SAML 2.0 felfedezése: Egyszeri kijelentkezés és inaktivitási időtúllépés

Hogyan kezeli a SAML 2.0 egyszeri kijelentkezést (SLO). tétlenség a szolgáltatói (SP) szinten a kezelés kritikus összetevője. Bár nyilvánvaló, hogy a kézi kijelentkezés az SP-nél az Identity Provider (IDP) kijelentkezést is okozza, az inaktivitás okozta munkamenet-időtúllépések bonyolítják a helyzetet. A SAML 2.0 szabvány nem határozza meg egyértelműen, hogyan kell kezelni az SLO-t a munkamenet lejártakor. Ez azonban lehetővé teszi a legjobb gyakorlatok átvételét, amelyek javíthatják a felhasználói élményt és a biztonságot.

Például még azután is, hogy inaktivitás miatt kizárták őket az SP-ből, azok a felhasználók, akik a Microsoft Entrán (IDP) keresztül bejelentkeznek egy alkalmazásba, például a MyApp-ba, gyakran bejelentkezve maradnak az IDP-be. Ha a felhasználó úgy gondolja, hogy teljesen ki van jelentkezve, miközben más, ugyanazt az egyszeri bejelentkezést használó alkalmazások még futnak, ez megnövelheti biztonsági aggályok. A kockázat csökkentésének egyik módja az SAML-munkamenet-kezelés beállítása az SP időtúllépési esemény IDP-szinten történő utánzására és a szinkronizált kijelentkezések garantálására.

Egy másik tényező a tétlen észlelési technikák frontend kódjának megvalósítása. A fejlesztők előre jelezhetik az inaktivitási időket, és figyelmeztethetik a felhasználókat a munkamenet lejárta előtt, ha eseményfigyelőket használnak a felhasználói tevékenységhez. Ennek használatával a felhasználók megtarthatják az irányítást a munkameneteik felett, és megbizonyosodhatnak arról, hogy saját SSO munkamenet nem fut folyamatosan. Egy SSO-ba integrált környezetben a fejlesztők megőrizhetik a biztonságot és a felhasználói kényelmet, ha egyensúlyt teremtenek e tényezők között.

Gyakori kérdések a SAML 2.0 SLO-val és a munkamenet-időtúllépésekkel kapcsolatban

  1. Mi történik szolgáltatói szinten, ha egy munkamenet időtúllépése következik be?
  2. Általában a felhasználó kijelentkezett a programból, amikor egy munkamenet SP szinten túllép. Ez azonban a rendszer beállításától függ, mivel a SAML 2.0 specifikációja nem követeli meg, hogy ez SLO-t okozzon az IDP-nél.
  3. Ki kell-e váltania az SLO-t az Identity Providernél a szolgáltatói munkamenet időtúllépése miatt?
  4. A szervezet szabályzata szabályozza ezt. Bár a SAML 2.0 ezt nem írja elő, sokan biztonsági okokból úgy döntenek, hogy SLO-t indítanak el az IDP-nél, amikor az SP-munkamenet véget ér.
  5. Ha egy inaktív munkamenet véget ér, hogyan tudom megvalósítani az SLO-t?
  6. A munkamenet lejárata egy háttérmechanizmuson keresztül észlelhető, amely ezután elindítja a create_logout_request_url() eljárás az SLO-kérés benyújtására az IDP-nek.
  7. Hogyan észlelhető a munkamenet inaktivitása a frontenden?
  8. Az eseményhallgatók kedvelik az as-t onmousemove és onkeypress Általában az inaktivitás nyomon követésére használják, mivel minden alkalommal visszaállítják az időzítőt, amikor a felhasználó interakcióba lép az alkalmazással.
  9. Az SP-ből való kijelentkezés után biztonságos az IDP munkamenet megnyitása?
  10. Biztonsági kockázat merülhet fel, ha nyitva hagyja az IDP munkamenetet, különösen, ha a felhasználó úgy gondolja, hogy teljesen kijelentkezett. Javasoljuk, hogy beállítsa az SLO-t az SP-munkamenet lejáratának replikálásához.

A SAML 2.0 munkamenet-időtúllépés-kezelés lezárása

Az egyszeri bejelentkezési rendszer biztonságának fenntartásához meg kell győződni arról, hogy az identitásszolgáltató és a szolgáltató szinkronizálja kijelentkezési folyamatait. Annak ellenére, hogy a SAML 2.0 nem írja elő a munkamenet-időtúllépések kezelését, sok vállalkozás egységes módon kezeli az egyszeri kijelentkezéseket.

Javasoljuk, hogy SLO kérést küldjön minden alkalommal, amikor a szolgáltatói munkamenet inaktivitás miatt véget ér a biztonság növelése érdekében. Ez biztosítja, hogy a felhasználó kijelentkezzen az Identity Providerből és az alkalmazásból, elkerülve a nem kívánt hozzáférést számos platformon.

Referenciák és források a SAML 2.0 legjobb gyakorlataihoz
  1. A SAML 2.0 és az egyszeri kijelentkezés szabványairól és irányelveiről szóló részletes dokumentáció a hivatalos oldalon található OASIS SAML 2.0 alapspecifikáció .
  2. A Microsoft Entrával és az SSO-val és SLO-val való integrációjával kapcsolatos betekintésért tekintse meg a hivatalos Microsoft dokumentációt Azure Active Directory és SAML .
  3. A példákban használt Node.js SAML-könyvtár a munkamenet-kezelési technikákkal együtt a SAML2-js könyvtári dokumentáció .
  4. Az egyszeri bejelentkezés és a munkamenet-kezelés konfigurálásával kapcsolatos bevált gyakorlatok megismeréséhez tekintse meg a következő cikket SSO legjobb gyakorlatok szerző: Auth0.