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
- Mi történik szolgáltatói szinten, ha egy munkamenet időtúllépése következik be?
- Á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.
- Ki kell-e váltania az SLO-t az Identity Providernél a szolgáltatói munkamenet időtúllépése miatt?
- 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.
- Ha egy inaktív munkamenet véget ér, hogyan tudom megvalósítani az SLO-t?
- 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.
- Hogyan észlelhető a munkamenet inaktivitása a frontenden?
- 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.
- Az SP-ből való kijelentkezés után biztonságos az IDP munkamenet megnyitása?
- 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
- 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ó .
- 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 .
- 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ó .
- 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.