Hitelesítési protokollok NestJS szemmel – OIDC, OAuth2, SAML2
A modern webalkalmazások egyik legkritikusabb része a hitelesítés és az autorizáció. Az alkalmazások közötti kommunikáció, a felhasználói fiókok védelme, valamint a biztonságos API-hozzáférés mind megköveteli, hogy szabványos protokollokra támaszkodjunk. NestJS-ben többféle lehetőségünk van ezek integrálására, hiszen a keretrendszer moduláris felépítése és a Passport.js integráció kiválóan illeszkedik a legtöbb megoldáshoz.
Ebben a cikkben áttekintjük a legelterjedtebb protokollokat – OIDC, OAuth2 és SAML2 –, és megnézzük, hogyan közelíthetők meg NestJS környezetben.
OAuth 2.0 – Az API-k kapuőre
OAuth 2.0 egy autorizációs protokoll, amely főleg erőforrásokhoz való hozzáférést szabályoz. Nem hitelesítésre találták ki, de gyakran így is használják. A legismertebb példák a "Bejelentkezés Google/Facebook fiókkal" típusú integrációk.
-
Fő elemei:
-
Authorization Server – kiadja a hozzáférési tokeneket
-
Resource Server – az erőforrást szolgáltató API
-
Client – az alkalmazás, amely a tokennel akar hozzáférni
-
Resource Owner – a felhasználó
-
-
Tipikus NestJS megoldás:
-
Használhatjuk a
@nestjs/passportcsomagot és egy OAuth2 stratégiát (pl.passport-google-oauth20,passport-github2). -
A szerver az OAuth2 Provider (Google, GitHub, Auth0, Keycloak stb.) által kiadott access token-t fogja ellenőrizni.
-
A NestJS oldalon írhatsz egy JWT guardot vagy használhatod a meglévő Passport guardokat a token validálására.
-
OpenID Connect (OIDC) – A hitelesítés modern szabványa
OpenID Connect (OIDC) az OAuth2-re épül, de kiegészíti azt hitelesítési képességekkel. Nemcsak azt szabályozza, hogy valaki hozzáférhet-e az erőforráshoz, hanem azt is, hogy ki a felhasználó.
Az OIDC tokenek között található az ID Token (általában JWT formátumban), amely tartalmazza a felhasználó azonosító adatait.
-
Fő előnyei:
-
Széles körben támogatott (Google, Microsoft Azure AD, Keycloak, Auth0 stb.)
-
Könnyen illeszthető Single Sign-On (SSO) környezetbe
-
Modern, JSON/JWT-alapú megközelítés
-
-
Tipikus NestJS megoldás:
-
Használhatod az
@nestjs/passport+passport-openidconnectvagypassport-azure-adstratégiákat. -
A visszatérő
id_token-t egyJwtStrategy-vel dolgozhatod fel. -
Ha enterprise környezetben vagy, gyakran Keycloak vagy Auth0 kerül elő, ahol az OIDC beállítása viszonylag egyszerű.
-
SAML 2.0 – A régi motoros
Security Assertion Markup Language (SAML 2.0) egy XML-alapú hitelesítési és autorizációs szabvány, amelyet gyakran vállalati környezetben (SSO, Active Directory, enterprise identity provider) használnak.
-
Jellemzői:
-
Az IdP (Identity Provider) ad ki egy XML-alapú "assertion"-t, ami igazolja, hogy a felhasználó ki ő.
-
Főleg Single Sign-On (SSO) megoldásokban elterjedt.
-
Nehézkesebb, mint az OIDC, de még mindig rengeteg vállalatnál kötelező.
-
-
Tipikus NestJS megoldás:
-
Léteznek
passport-samlintegrációk, amiket beépíthetsz egy NestJS modulba. -
A SAML által küldött XML assertiont a stratégia validálja, majd NestJS oldalon a felhasználói session-t/jwt-t hozod létre.
-
Általában egy köztes réteget kell kialakítani: SAML → NestJS API → JWT a frontend felé.
-
NestJS integrációs minták
A NestJS legnagyobb előnye, hogy tisztán moduláris szerkezetben tudod kezelni a hitelesítést. Tipikus megoldás:
-
AuthModule – tartalmazza a Passport stratégiákat, Guardokat, és az AuthService-t.
-
Guards – pl.
JwtAuthGuard,Oauth2Guard,SamlAuthGuard. -
Custom Decorators – pl.
@CurrentUser()a requestből kinyert felhasználói objektumhoz. -
Strategy-k – különböző protokollokhoz:
-
JwtStrategy(OIDC és OAuth2 tokenekhez) -
SamlStrategy(SAML assertion feldolgozására) -
LocalStrategy(klasszikus email/jelszó auth-hoz)
-
Mikor melyiket?
-
OAuth2 – Ha csak API hozzáférést akarsz szabályozni, pl. harmadik fél kliensalkalmazásai.
-
OIDC – Ha modern, szabványos felhasználói hitelesítést és SSO-t szeretnél.
-
SAML2 – Ha régebbi vállalati környezethez kell integrálódni, különösen Active Directory vagy enterprise IdP esetén.
✅ Összefoglalva:
NestJS-ben mindhárom protokoll könnyen illeszthető Passport stratégiákon keresztül. Ha új fejlesztést indítasz, az OIDC a legjobb választás, mert modern, jól támogatott, és egyszerre oldja meg a hitelesítést és az autorizációt.
Comments
Post a Comment