Pochopenie SAML 2.0 Jednorazové odhlásenie po uplynutí časového limitu relácie
Keďže systémy SAML 2.0 Single Sign-On (SSO) umožňujú používateľom prihlásiť sa do rôznych aplikácií pomocou jednej sady poverení, značne zjednodušili autentifikáciu používateľov. Existujú však aj významné problémy s pojmom jednotného odhlásenia (SLO), najmä pokiaľ ide o to, čo sa stane, keď uplynie platnosť relácie používateľa u poskytovateľa služieb (SP), pretože sa neprihlásil. V tomto prípade by mal poskytovateľ identity Koniec relácie (IDP)?
Riadenie relácií medzi poskytovateľom služieb a IDP je nevyhnutné na zabezpečenie bezpečného a efektívneho prístupu v kontexte SAML 2.0. Nie je vždy zrejmé, kedy sa relácia SP skončí, či má byť používateľ stále pripojený k IDP, čo by mohlo mať vplyv na iné aplikácie, ktoré sú prepojené s rovnakým IDP. To vyvoláva otázky týkajúce sa použiteľnosti, ako aj bezpečnosti.
Mnohé podniky, najmä tie, ktoré používajú rozhrania ako Microsoft Entra, musia zaviesť jasný najlepší postup na spracovanie týchto časových limitov relácií. Je lepšie, aby sa relácia SP zastavila jednoducho na úrovni SP, alebo by to malo viesť aj k SLO, ktoré používateľa odhlási z jeho účtu IDP?
Pomocou príkladov z reálneho sveta na ilustráciu najefektívnejších techník spracovania časových limitov relácií a zaručenia bezpečnosti aj použiteľnosti tento dokument skúma štandardné postupy a štandardy na spracovanie udalostí SAML 2.0 SLO v takýchto situáciách.
Príkaz | Príklad použitia |
---|---|
session() | Používa sa v aplikácii Express na ovládanie používateľských relácií. V tomto príklade pomáha pri monitorovaní aktivity používateľa a časových limitov relácií, aby bolo možné v prípade potreby spustiť logiku odhlásenia. |
maxAge | Určuje časový rámec, počas ktorého je súbor cookie relácie platný. V tomto prípade je časovač nastavený tak, aby vypršal po 600 000 milisekúndách alebo 10 minútach a inicioval udalosť odhlásenia. |
create_logout_request_url() | Keď sa relácia poskytovateľa služieb ukončí, adresa URL požiadavky jednotného odhlásenia (SLO) vytvorená touto metódou knižnice SAML2 sa prepošle poskytovateľovi identity (IDP). |
readFileSync() | Synchrónne načíta súbory kľúčov a certifikáty, čo je potrebné na nastavenie poskytovateľa služieb SAML2. Aby mohli Poskytovateľ služieb a Poskytovateľ identity bezpečne komunikovať, sú tieto certifikácie potrebné. |
assert_endpoint | Označuje adresu URL, ktorú po úspešnej autentifikácii použije poskytovateľ identity na prenos tvrdenia SAML. Týmto spôsobom je zaručená úroveň overenia používateľa na úrovni poskytovateľa služieb. |
window.onload | Táto udalosť sa používa na resetovanie časovača nečinnosti relácie v klientskom rozhraní. Zabezpečuje, že keď používateľ načíta program prvýkrát, časovač sa spustí odznova. |
onmousemove | Ak chcete resetovať časovač relácie, tento prijímač udalostí zistí akýkoľvek pohyb myši. Je to nevyhnutné na sledovanie správania používateľov a na predchádzanie náhodným časovým limitom relácie. |
fetch() | Používa sa na asynchrónne odoslanie požiadavky SLO po uplynutí časového limitu relácie na server. Aby bolo možné spojiť sa s poskytovateľom identity a odhlásiť používateľa z IDP, spustí sa backendová logika. |
setTimeout() | Táto funkcia v kóde frontendu spôsobí, že udalosť časového limitu relácie nastane po vopred určenom množstve nečinnosti. Je to nevyhnutné na sledovanie správania používateľov a implementáciu bezpečnostných predpisov. |
Optimalizácia jednoduchého odhlásenia pomocou spracovania časového limitu relácie SAML 2.0
Používanie a Express, backendový skript na obsluhu Single Log Out (SLO) sa zameriava na schopnosť sledovať uplynutie platnosti užívateľskej relácie a iniciovať postupnosť odhlásenia na úrovniach poskytovateľa služieb (SP) a poskytovateľa identity (IDP). Riadenie expresných relácií je jadrom tejto úvahy. Spúšťací bod vytvoríme nastavením ukončenia relácie po vopred určenom množstve nečinnosti – v našom príklade desať minút. Keď sa relácia skončí, skript použije metódu `create_logout_request_url()} na spustenie požiadavky na odhlásenie zo SAML 2.0, ktorá sa potom pripojí k IDP (v tomto prípade ), aby ste úplne ukončili reláciu používateľa. To zvyšuje bezpečnosť tým, že zaručuje, že sa používateľ úplne odhlásil zo systému.
Naložíme a kľúče do aplikácie pomocou príkazu `readFileSync()} na umožnenie bezpečnej komunikácie medzi SP (MyApp) a IDP (Microsoft Entra). Overením žiadosti o odhlásenie tieto certifikáty chránia pred nelegálnym odhlásením a zaručujú, že komunikácia zostane šifrovaná a potvrdená. Používateľ je odoslaný na adresu URL požiadavky na odhlásenie po jej vygenerovaní, kde IDP spracuje odhlásenie a v prípade potreby ukončí reláciu používateľa cez akékoľvek pridružené aplikácie. Zachovanie bezpečnosti a integrity multiaplikačných inštalácií Single Sign-On (SSO) vyžaduje túto obojsmernú komunikáciu.
JavaScript skript je nevyhnutný na sledovanie aktivít používateľov v reálnom čase na klientskom rozhraní. Zakaždým, keď používateľ interaguje s programom, resetujeme časový limit relácie pomocou poslucháčov udalostí, ako sú `onmousemove} a `onkeypress`. Časovač, ktorý bol nastavený pomocou `setTimeout()` upozorní užívateľa a automaticky ho odhlási z SP (MyApp), keď je užívateľ nečinný. Po odhlásení sa proces odhlásenia zo SAML 2.0, ktorý bol predtým pokrytý, spustí frontendovým skriptom, ktorý odošle požiadavku SLO do backendu pomocou `fetch()`. Táto technika zaisťuje, že nečinnosť na úrovni SP bude vyriešená rýchlo, bezpečne a bezchybne.
Pri integrácii SAML 2.0 a sú kombinované, používateľská skúsenosť je bezproblémová a bezpečnostné štandardy sú dodržané. Aby sa zabránilo tomu, že používateľ zostane autentifikovaný dlhšie, ako je povolené počas nečinnosti, časový limit relácie spustí odhlásenie lokálneho SP aj odhlásenie IDP. Hoci SAML 2.0 nevyžaduje žiadne konkrétne správanie v súvislosti s časovými limitmi relácií, všeobecne sa akceptuje ako najlepší postup použiť na spustenie SLO uplynutie platnosti relácie. Ukončením nečinných relácií dosahuje rovnováhu medzi bezpečnosťou a používateľskou skúsenosťou tým, že umožňuje synchronizované odhlasovanie na rôznych platformách pripojených k SSO.
Použitie Node.js a Express na spracovanie SAML 2.0 Single Log Out s časovým limitom relácie
Backendová metóda na správu SAML 2.0 SLO s časovými limitmi relácie poskytovateľa služieb pomocou Node.js a Express. Toto riešenie používa požiadavky SAML na kontrolu, či relácia nevypršala, a na spustenie SLO na úrovni poskytovateľa identity.
// 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");
});
Používanie rozhrania JavaScript a detekcie časového limitu nečinnosti na spracovanie SAML 2.0 SLO
V metóde frontendu sa časový limit relácie zisťuje pomocou vanilla JavaScript na monitorovanie nečinnosti používateľa a spustenie funkcie Single Log Out (SLO). Toto povie poskytovateľovi služby, aby vydal požiadavku SLO poskytovateľovi identity.
// 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));
}
Preskúmanie SAML 2.0: Jednorazové odhlásenie a časový limit nečinnosti
Ako oslovuje SAML 2.0 Single Log Out (SLO). na úrovni poskytovateľa služieb (SP) je kritickým komponentom na riadenie. Hoci je zrejmé, že manuálne odhlásenie na SP by malo spôsobiť aj odhlásenie poskytovateľa identity (IDP), časové limity relácie spôsobené nečinnosťou situáciu komplikujú. Štandard SAML 2.0 jasne neuvádza, ako by sa malo zaobchádzať so SLO pri vypršaní platnosti relácie. To však umožňuje prijatie osvedčených postupov, ktoré môžu zlepšiť používateľskú skúsenosť a bezpečnosť.
Napríklad používatelia, ktorí sa prihlásia do aplikácie, ako je MyApp cez Microsoft Entra (IDP), často zostávajú prihlásení do IDP, a to aj po odpojení od SP z dôvodu nečinnosti. Ak sa používateľ domnieva, že je úplne odhlásený, zatiaľ čo ostatné aplikácie využívajúce rovnaké jednotné prihlásenie sú stále spustené, môže sa to zvýšiť . Nastavenie správy relácií SAML na napodobňovanie udalosti časového limitu SP na úrovni IDP a zaručenie synchronizovaných odhlásení je jedným zo spôsobov, ako toto riziko znížiť.
Ďalším faktorom je implementácia techník detekcie nečinnosti v kóde frontendu. Vývojári môžu predvídať časy nečinnosti a upozorniť používateľov pred vypršaním relácie pomocou poslucháčov udalostí pre aktivitu používateľov. Používatelia si tak môžu udržať kontrolu nad svojimi reláciami a uistiť sa, že ich neprebieha nepretržite. V prostredí integrovanom SSO môžu vývojári zachovať bezpečnosť a užívateľský komfort tým, že nájdu rovnováhu medzi týmito faktormi.
- Čo sa stane na úrovni poskytovateľa služieb, keď uplynie časový limit relácie?
- Používateľ je zvyčajne odhlásený z programu, keď uplynie časový limit relácie na úrovni SP. Závisí to však od toho, ako je systém nastavený, pretože špecifikácia SAML 2.0 nevyžaduje, aby to spôsobilo SLO u IDP.
- Malo by byť SLO u poskytovateľa identity spustené časovým limitom relácie poskytovateľa služieb?
- Riadi to politika organizácie. Hoci SAML 2.0 to nevyžaduje, mnohí sa rozhodnú spustiť SLO u IDP, keď sa relácia SP z bezpečnostných dôvodov skončí.
- Keď sa skončí neaktívna relácia, ako môžem spustiť SLO?
- Ukončenie platnosti relácie je možné zistiť pomocou backendového mechanizmu, ktorý potom spustí a postup pri podaní žiadosti o SLO u IDP.
- Ako sa zistí nečinnosť relácie na frontende?
- Poslucháči udalostí ako a sa bežne používajú na sledovanie nečinnosti, pretože resetujú časovač zakaždým, keď používateľ interaguje s aplikáciou.
- Je po odhlásení zo SP bezpečné mať otvorenú reláciu IDP?
- Ponechaním otvorenej relácie IDP môže vzniknúť bezpečnostné riziko, najmä ak sa používateľ domnieva, že sa úplne odhlásil. Odporúča sa nastaviť SLO na replikáciu vypršania platnosti relácie SP.
Udržiavanie bezpečnosti v systéme SSO vyžaduje uistenie sa, že poskytovateľ identity a poskytovateľ služieb synchronizujú svoje procesy odhlásenia. Aj keď SAML 2.0 nenariaďuje, ako by sa malo zaobchádzať s časovými limitmi relácií, veľa podnikov spracováva jednotlivé odhlásenia jednotným spôsobom.
Odporúča sa odoslať požiadavku SLO vždy, keď sa relácia poskytovateľa služby skončí z dôvodu nečinnosti, aby sa zlepšila bezpečnosť. To zaisťuje, že sa používateľ odhlásil od poskytovateľa identity, ako aj z aplikácie, čím sa zabráni nechcenému prístupu na mnohých platformách.
- Podrobnú dokumentáciu o štandardoch a pokynoch SAML 2.0 a Single Log Out nájdete v oficiálnom Základná špecifikácia OASIS SAML 2.0 .
- Informácie o aplikácii Microsoft Entra a jej integrácii s SSO a SLO nájdete v oficiálnej dokumentácii spoločnosti Microsoft na Azure Active Directory a SAML .
- Knižnicu Node.js SAML použitú v príkladoch spolu s technikami správy relácií možno ďalej preskúmať na stránke Dokumentácia knižnice SAML2-js .
- Ak chcete porozumieť osvedčeným postupom pri konfigurácii jednotného prihlásenia a správy relácií, navštívte článok o Osvedčené postupy SSO Autor: Auth0.