From 31d4479c63c2968a2d47b2c9b165e183d4aae28d Mon Sep 17 00:00:00 2001 From: magdo Date: Tue, 24 Feb 2026 01:29:59 +0100 Subject: [PATCH] authn_z --- Backend_ppt/authn_z/authn.tex | 205 ++++++++ Backend_ppt/authn_z/authn_z.pdf | Bin 0 -> 1135087 bytes Backend_ppt/authn_z/authn_z.tex | 25 + Backend_ppt/authn_z/authz.tex | 191 +++++++ Backend_ppt/authn_z/cookies.tex | 166 ++++++ Backend_ppt/authn_z/cookies_old.tex | 470 +++++++++++++++++ Backend_ppt/authn_z/hash.tex | 153 ++++++ Backend_ppt/authn_z/jwt.tex | 194 +++++++ Backend_ppt/authn_z/jwt_old.tex | 549 +++++++++++++++++++ Backend_ppt/authn_z/middlewares.tex | 205 ++++++++ Backend_ppt/authn_z/middlewares_old.tex | 555 ++++++++++++++++++++ Backend_ppt/authn_z/oauth2.tex | 154 ++++++ Backend_ppt/authn_z/oauth2_old.tex | 443 ++++++++++++++++ Backend_ppt/authn_z/services.tex | 233 ++++++++ Backend_ppt/authn_z/services_old.tex | 671 ++++++++++++++++++++++++ Backend_ppt/authn_z/session.tex | 280 ++++++++++ 16 files changed, 4494 insertions(+) create mode 100644 Backend_ppt/authn_z/authn.tex create mode 100644 Backend_ppt/authn_z/authn_z.pdf create mode 100644 Backend_ppt/authn_z/authn_z.tex create mode 100644 Backend_ppt/authn_z/authz.tex create mode 100644 Backend_ppt/authn_z/cookies.tex create mode 100644 Backend_ppt/authn_z/cookies_old.tex create mode 100644 Backend_ppt/authn_z/hash.tex create mode 100644 Backend_ppt/authn_z/jwt.tex create mode 100644 Backend_ppt/authn_z/jwt_old.tex create mode 100644 Backend_ppt/authn_z/middlewares.tex create mode 100644 Backend_ppt/authn_z/middlewares_old.tex create mode 100644 Backend_ppt/authn_z/oauth2.tex create mode 100644 Backend_ppt/authn_z/oauth2_old.tex create mode 100644 Backend_ppt/authn_z/services.tex create mode 100644 Backend_ppt/authn_z/services_old.tex create mode 100644 Backend_ppt/authn_z/session.tex diff --git a/Backend_ppt/authn_z/authn.tex b/Backend_ppt/authn_z/authn.tex new file mode 100644 index 0000000..72b65fe --- /dev/null +++ b/Backend_ppt/authn_z/authn.tex @@ -0,0 +1,205 @@ +\section{Authentikáció} + +\begin{frame}{Mi az authentikáció?} + \begin{block}{Definíció} + Folyamat, amely során a rendszer ellenőrzi egy felhasználó identitását. + \end{block} + + \begin{itemize} + \item \textbf{Kérdés:} Ki vagy? + \item \textbf{Cél:} Felhasználó identitásának megállapítása + \item \textbf{Eredmény:} Sikeres vagy sikertelen azonosítás + \end{itemize} + + \begin{alertblock}{Fontos!} + Authentikáció $\neq$ Autorizáció! + \end{alertblock} +\end{frame} + +\begin{frame}{Authentikáció vs. Autorizáció} + \begin{columns} + \begin{column}{0.48\textwidth} + \begin{block}{Authentikáció} + \begin{itemize} + \item Ki vagy? + \item Bejelentkezés + \item Példa: Jelszó ellenőrzés + \end{itemize} + \end{block} + \end{column} + + \begin{column}{0.48\textwidth} + \begin{block}{Autorizáció} + \begin{itemize} + \item Mit tehetsz? + \item Jogosultságok + \item Példa: Admin jogosultság + \end{itemize} + \end{block} + \end{column} + \end{columns} + + \begin{center} + \texttt{Authentikáció} $\rightarrow$ \texttt{Autorizáció} + \end{center} +\end{frame} + +\begin{frame}{Authentikációs módszerek} + \begin{enumerate} + \item \textbf{Tudás alapú} + \begin{itemize} + \item Példa: jelszó, PIN kód + \end{itemize} + + \item \textbf{Tulajdon alapú} + \begin{itemize} + \item Példa: okostelefon, hardver token + \end{itemize} + + \item \textbf{Inherencia alapú} + \begin{itemize} + \item Példa: ujjlenyomat, arcfelismerés + \end{itemize} + \end{enumerate} +\end{frame} + +\begin{frame}{Többfaktoros authentikáció (MFA)} + \begin{block}{Multi-Factor Authentication} + Két vagy több független faktor kombinációja. + \end{block} + + \begin{itemize} + \item \textbf{2FA példák:} + \begin{itemize} + \item Jelszó + SMS kód + \item Jelszó + Authenticator app + \item Jelszó + ujjlenyomat + \end{itemize} + + \item \textbf{Előnyök:} + \begin{itemize} + \item Magasabb biztonság + \item Védelem jelszó kompromittálódás esetén + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Jelszó alapú authentikáció} + \begin{block}{Leggyakoribb módszer} + Felhasználónév + jelszó párossal történő azonosítás. + \end{block} + + \begin{itemize} + \item \textbf{Folyamat:} + \begin{enumerate} + \item Felhasználó megadja username + password + \item Rendszer összehasonlítja a hash-sel + \item Sikeres/sikertelen válasz + \end{enumerate} + + \item \textbf{Biztonság:} + \begin{itemize} + \item Soha ne tároljuk plain text-ben! + \item Erős hash (bcrypt, Argon2) + \item Salt minden jelszóhoz + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}{Token alapú authentikáció} + \begin{block}{Modern megközelítés} + Bejelentkezés után szerver tokent generál, kliens minden kéréshez csatolja. + \end{block} + + \begin{enumerate} + \item Bejelentkezés (username + password) + \item Szerver ellenőrzi + \item Token generálás + \item Kliens eltárolja (localStorage, cookie) + \item Token csatolása minden kéréshez + \item Szerver validálja + \end{enumerate} + + \begin{itemize} + \item \textbf{Típusok:} JWT, OAuth, API keys + \item \textbf{Előnyök:} Stateless, skálázható + \end{itemize} +\end{frame} + +\begin{frame}{Session alapú authentikáció} + \begin{block}{Hagyományos megközelítés} + Bejelentkezési információkat a szerver tárolja session-ökben. + \end{block} + + \begin{enumerate} + \item Bejelentkezés + \item Szerver session létrehozás + \item Session ID küldése cookie-ban + \item Kliens csatolja minden kéréshez + \item Szerver azonosítja a felhasználót + \end{enumerate} + + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{Előnyök:} + \begin{itemize} + \item Biztonságosabb + \item Könnyű visszavonás + \end{itemize} + \end{column} + + \begin{column}{0.48\textwidth} + \textbf{Hátrányok:} + \begin{itemize} + \item Stateful + \item Nehezebb skálázás + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}{OAuth 2.0 / OpenID Connect} + \begin{block}{Harmadik fél authentikáció} + Bejelentkezés külső szolgáltatókkal (Google, Facebook, GitHub). + \end{block} + + \begin{itemize} + \item \textbf{OAuth 2.0:} Autorizációs framework + \item \textbf{OpenID Connect:} Authentikációs réteg + + \item \textbf{Előnyök:} + \begin{itemize} + \item Nincs jelszó kezelés + \item Jobb UX + \item Biztonságos protokoll + \end{itemize} + + \item \textbf{Használat:} + \begin{itemize} + \item Social login + \item SSO megoldások + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}[shrink=5]{Biztonsági megfontolások} + \begin{alertblock}{Gyakori sebezhetőségek} + \begin{itemize} + \item Gyenge jelszavak + \item Nincs rate limiting + \item Token kiszivárogtatás + \item Man-in-the-middle (nincs HTTPS) + \end{itemize} + \end{alertblock} + + \begin{block}{Best Practices} + \begin{itemize} + \item HTTPS mindig + \item Erős jelszó policy + \item Rate limiting + \item MFA + \item Token lejárati idő + \item CSRF védelem + \end{itemize} + \end{block} +\end{frame} diff --git a/Backend_ppt/authn_z/authn_z.pdf b/Backend_ppt/authn_z/authn_z.pdf new file mode 100644 index 0000000000000000000000000000000000000000..29173936c30d47610cfe8b5df230f390b7f745b8 GIT binary patch literal 1135087 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

7LE=-ngU!!DI`mB%Q{;bkCDN-D#Gf^s6 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

m?|lr9)!8ibtfk2!2SYobNbk$iC$c9 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

+>6M3Y_*)mJ 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 F{|}Gu9_0W4 literal 0 HcmV?d00001 diff --git a/Backend_ppt/authn_z/authn_z.tex b/Backend_ppt/authn_z/authn_z.tex new file mode 100644 index 0000000..5d9af25 --- /dev/null +++ b/Backend_ppt/authn_z/authn_z.tex @@ -0,0 +1,25 @@ +\documentclass[usenames,dvipsnames,aspectratio=169]{beamer} +\usepackage{../common/webfejl} + +\title[Webtechnológia és webalkalmazás-fejlesztés - Auth]{Webtechnológia és webalkalmazás-fejlesztés - Auth} +\subtitle{Authentikáció és autorizáció} + +\begin{document} + +\begin{frame}[plain] + \titlepage + \logoalul +\end{frame} + +\input{authn.tex} +\input{authz.tex} +\input{hash.tex} +\input{cookies.tex} +\input{session.tex} +\input{jwt.tex} +\input{oauth2.tex} +\input{middlewares.tex} +\input{services.tex} + + +\end{document} \ No newline at end of file diff --git a/Backend_ppt/authn_z/authz.tex b/Backend_ppt/authn_z/authz.tex new file mode 100644 index 0000000..11ba815 --- /dev/null +++ b/Backend_ppt/authn_z/authz.tex @@ -0,0 +1,191 @@ +\section{Autorizáció} + +\begin{frame}{Mi az autorizáció?} + \begin{block}{Definíció} + Meghatározza, hogy egy azonosított felhasználó milyen erőforrásokhoz férhet hozzá és milyen műveleteket végezhet. + \end{block} + + \begin{itemize} + \item \textbf{Kérdés:} Mit tehetsz? + \item \textbf{Cél:} Jogosultságok szabályozása + \item \textbf{Eredmény:} Engedélyezett vagy tiltott művelet + \end{itemize} + + \begin{alertblock}{Fontos!} + Autorizáció az authentikáció után történik. + \end{alertblock} +\end{frame} + +\begin{frame}{Autorizációs modelljei} + \begin{enumerate} + \item \textbf{RBAC (Role-Based Access Control)} + \begin{itemize} + \item Szerepkörök alapján + \item Példa: Admin, Editor, User + \end{itemize} + + \item \textbf{ABAC (Attribute-Based)} + \begin{itemize} + \item Attribútum alapján (user, resource, context) + \item Példa: "Department = IT és 9-17 között" + \end{itemize} + + \item \textbf{ACL (Access Control List)} + \begin{itemize} + \item Erőforrás-szintű lista + \item Példa: fájlrendszer jogosultságok + \end{itemize} + \end{enumerate} +\end{frame} + +\begin{frame}{RBAC - Szerepkör alapú} + \begin{block}{Lényege} + Felhasználók szerepköröket kapnak, ez határozza meg a jogosultságokat. + \end{block} + + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{Előnyök:} + \begin{itemize} + \item Könnyű adminisztráció + \item Átlátható + \item Gyors ellenőrzés + \end{itemize} + \end{column} + + \begin{column}{0.48\textwidth} + \textbf{Hátrányok:} + \begin{itemize} + \item Skálázhatóság + \item Kevesebb rugalmasság + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}{ABAC - Attribútum alapú} + \begin{block}{Lényege} + Hozzáférési szabályok attribútumok alapján. + \end{block} + + \begin{itemize} + \item \textbf{User:} szerepkör, osztály, beosztás + \item \textbf{Resource:} tulajdonos, típus + \item \textbf{Context:} idő, hely, eszköz + \end{itemize} + + \begin{exampleblock}{Példa szabály} + \texttt{(role=Manager) AND (resource.owner = user) AND (time < 18:00)} + \end{exampleblock} +\end{frame} + +\begin{frame}{ACL - Access Control List} + \begin{block}{Lényege} + Erőforrásonként tárolt lista a hozzáférési jogokról. + \end{block} + + \begin{itemize} + \item \textbf{Példa:} fájlrendszer (read, write, execute) + \item \textbf{Előny:} finém hozzáférés + \item \textbf{Hátrány:} nagy rendszereknelnehéz kezelni + \end{itemize} +\end{frame} + +\begin{frame}{Autorizáció webalkalm azásban} + \begin{block}{Tipikus folyamat} + Szerver minden kérésnél ellenőrzi a jogosultságot. + \end{block} + + \begin{enumerate} + \item Authnentikáció után szerepkör kiosztás + \item Tokenben vagy session-ben tárolás + \item Middleware ellenőrzi a hozzáférést + \item Nincs jog: \texttt{403 Forbidden} + \end{enumerate} + + \begin{alertblock}{HTTP státuszkód} + \texttt{401} = nincs auth, \texttt{403} = nincs jogosultság + \end{alertblock} +\end{frame} + +\begin{frame}[fragile,shrink=10]{Autorizációs middleware (RBAC)} + \begin{exampleblock}{Egyszerű szerepkör ellenőrzés} + \tiny + \begin{verbatim} +const authorize = (...roles) => { + return (req, res, next) => { + const { role } = req.user; // pl. JWT-ből + if (!roles.includes(role)) { + return res.status(403).json({ error: 'Forbidden' }); + } + next(); + }; +}; + +app.get('/admin', auth, authorize('Admin'), (req, res) => { + res.json({ data: 'Admin content' }); +}); + \end{verbatim} + \end{exampleblock} +\end{frame} + +\begin{frame}[fragile,shrink=10]{Policy alapú autorizáció (ABAC)} + \begin{exampleblock}{Szabály központú hozzáférés} + \tiny + \begin{verbatim} +const canAccess = (user, resource) => { + return user.department === resource.department && + user.level >= resource.requiredLevel && + new Date().getHours() < 18; +}; + +app.get('/reports/:id', auth, async (req, res) => { + const report = await getReport(req.params.id); + if (!canAccess(req.user, report)) { + return res.status(403).json({ error: 'Forbidden' }); + } + res.json(report); +}); + \end{verbatim} + \end{exampleblock} +\end{frame} + +\begin{frame}{Legkisebb jogosultság elve} + \begin{block}{Principle of Least Privilege} + Mindenki csak a feladatohoz szükséges minimális jogokat kapja. + \end{block} + + \begin{itemize} + \item Csökkenti a kockázatot + \item Korlátozza a hibák hatását + \item Egyszerűbb auditálás + \end{itemize} + + \begin{alertblock}{Gyakori hiba} + \textbf{Mindenki admin} = gyors fejlesztés, de veszélyes élesben! + \end{alertblock} +\end{frame} + +\begin{frame}{Autorizáció Best Practices} + \begin{itemize} + \item Minden érzékeny végpontot ellenőrizz + \item Middleware vagy policy réteg + \item Role/policy központi kezelés + \item Logolás + \item Admin funkciók külön kezelése + \item RBAC + ABAC kombináció + \end{itemize} +\end{frame} + +\begin{frame}{Összefoglalás - Autorizáció} + \begin{itemize} + \item Autorizáció = hozzáférések és jogosultságok kezelése + \item 401 vs 403: authentikáció hiánya vs jogosultság hiánya + \item Fő modellek: RBAC, ABAC, ACL + \item Middleware-ekkel megvalósítható a gyakorlatban + \item Least Privilege elv alkalmazása + \end{itemize} + + \vspace{0.5cm} + +\end{frame} \ No newline at end of file diff --git a/Backend_ppt/authn_z/cookies.tex b/Backend_ppt/authn_z/cookies.tex new file mode 100644 index 0000000..2a9ae6b --- /dev/null +++ b/Backend_ppt/authn_z/cookies.tex @@ -0,0 +1,166 @@ +\section{HTTP Cookies} + +\begin{frame}[shrink=15]{Mi az a Cookie?} + \begin{block}{HTTP Cookie definíció} + Kis méretű adat (max 4KB), amit szerver küld böngészőnek, automatikusan visszaküldődik. + \end{block} + \begin{itemize} + \item Session kezelés, preferenciák, tracking + \item Beállítható élettartam + \end{itemize} +\end{frame} + +\begin{frame}[fragile,shrink=15]{Cookie beállítása Express-ben} + \begin{verbatim} +// Egyszerű cookie +res.cookie('session', 'abc123'); + +// Opciókkal +res.cookie('user', 'john', { + maxAge: 900000, // 15 perc ms-ban + httpOnly: true, // JS nem fér hozzá + secure: true, // csak HTTPS + sameSite: 'strict' // CSRF védelem +}); + \end{verbatim} +\end{frame} + +\begin{frame}[shrink=15]{Cookie attribútumok} + \begin{small} + \begin{itemize} + \item \textbf{Domain}: \texttt{.example.com} - subdomain-ek + \item \textbf{Path}: \texttt{/api} - URL path scope + \item \textbf{Expires/Max-Age}: Lejárat ideje + \item \textbf{HttpOnly}: JS hozzáférés blokkolása (XSS védelem) + \item \textbf{Secure}: Csak HTTPS-en küldve + \item \textbf{SameSite}: \texttt{Strict|Lax|None} - CSRF védelem + \end{itemize} + \end{small} +\end{frame} + +\begin{frame}[shrink=15]{Cookie típusok} + \begin{enumerate} + \item \textbf{Session Cookie}: Nincs Expires/Max-Age, böngésző bezáráskor törlődik + \item \textbf{Persistent Cookie}: Van lejárati idő, túléli böngésző bezárást + \item \textbf{Secure Cookie}: Csak HTTPS-en + \item \textbf{HttpOnly Cookie}: JS nem fér hozzá + \item \textbf{SameSite Cookie}: CSRF támadás ellen + \item \textbf{Third-party Cookie}: Más domain-ről + \end{enumerate} +\end{frame} + +\begin{frame}[shrink=15]{SameSite Cookie attribútum} + \begin{description} + \item[Strict] Cookie csak saját site kérésekkel küldve. Legjobb CSRF védelem. + \item[Lax] GET kéréseknél küldi cross-site. Default modern böngészőkben. + \item[None] Mindig küldi (Secure kötelező). Third-party használathoz. + \end{description} + \begin{alertblock}{CSRF véd} + SameSite=Strict/Lax megakadályozza cross-site támadásokat. + \end{alertblock} +\end{frame} + +\begin{frame}[shrink=15]{Cookie vs localStorage vs sessionStorage} + \begin{tiny} + \begin{tabular}{|l|c|c|c|} + \hline + & \textbf{Cookie} & \textbf{localStorage} & \textbf{sessionStorage} \\ + \hline + Kapacitás & 4KB & 5-10MB & 5-10MB \\ + Lejárat & Beállítható & Nincs & Tab bezárás \\ + HTTP-ben & Igen & Nem & Nem \\ + XSS véd & HttpOnly & Nem & Nem \\ + \hline + \end{tabular} + \end{tiny} + \begin{exampleblock}{Ajánlás} + \textbf{Érzékeny:} HttpOnly Cookie, \textbf{Publikus:} localStorage + \end{exampleblock} +\end{frame} + +\begin{frame}[fragile,shrink=15]{Cookie olvasása Express-ben} + \begin{verbatim} +const cookieParser = require('cookie-parser'); +app.use(cookieParser()); + +app.get('/profile', (req, res) => { + const sessionId = req.cookies.session; + res.json({ sessionId }); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=15]{Cookie törlése} + \begin{verbatim} +app.post('/logout', (req, res) => { + res.clearCookie('session'); + res.json({ message: 'Logged out' }); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=15]{Signed Cookies} + \begin{block}{Integritás védelem} + HMAC aláírással ellátott cookie, megakadályozza manipulációt. + \end{block} + \begin{verbatim} +app.use(cookieParser('secret-key')); + +app.get('/set', (req, res) => { + res.cookie('userId', '123', { signed: true }); + res.send('OK'); +}); + +app.get('/get', (req, res) => { + const id = req.signedCookies.userId; + res.json({ id }); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[shrink=15]{XSS vs CSRF} + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{XSS (Cross-Site Scripting)} + \begin{itemize} + \item JS injection támadás + \item Cookie lopás \texttt{document.cookie} + \item \textbf{Védelem:} HttpOnly cookie + \end{itemize} + \end{column} + \begin{column}{0.48\textwidth} + \textbf{CSRF (Cross-Site Request Forgery)} + \begin{itemize} + \item Hamis kérés küldés + \item Cookie auto-send kihasználása + \item \textbf{Védelem:} SameSite, CSRF token + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}[fragile,shrink=20]{CSRF Token védelem} + \begin{verbatim} +const csrf = require('csurf'); +app.use(csrf({ cookie: true })); + +app.get('/form', (req, res) => { + res.render('form', { csrfToken: req.csrfToken() }); +}); + +app.post('/submit', (req, res) => { + res.send('Valid!'); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[shrink=15]{Cookie Security Best Practices} + \begin{enumerate} + \item \textbf{HttpOnly}: Érzékeny cookie-khoz mindig + \item \textbf{Secure}: Éles környezetben HTTPS-el + \item \textbf{SameSite}: Strict vagy Lax CSRF ellen + \item \textbf{Short expiration}: Session token-ekhez rövid lejárat + \item \textbf{Domain scope}: Csak szükséges domain-hez + \item \textbf{Signed cookies}: Integritás ellenőrzéshez + \end{enumerate} +\end{frame} diff --git a/Backend_ppt/authn_z/cookies_old.tex b/Backend_ppt/authn_z/cookies_old.tex new file mode 100644 index 0000000..af400dd --- /dev/null +++ b/Backend_ppt/authn_z/cookies_old.tex @@ -0,0 +1,470 @@ +\section{HTTP Cookies} + +\begin{frame}{Mi az a Cookie?} + \begin{block}{HTTP Cookie definíció} + Kis méretű adat, amit a szerver küld a böngészőnek, és automatikusan vissza küldődik. + \end{block} + + \begin{itemize} + \item \textbf{Méret:} Max 4KB + \item \textbf{Tárolás:} Böngésző + \item \textbf{Élettartam:} Beállítható + + \item \textbf{Használat:} + \begin{itemize} + \item Session kezelés + \item Felhasználói preferenciák + \item Tracking + \end{itemize} + \end{itemize} + + \begin{exampleblock}{Authentikációban} + Cookie-k ideálisak session ID és token tárolására. + \end{exampleblock} +\end{frame} + +\begin{frame}[fragile]{Cookie beállítása} + \begin{block}{Set-Cookie HTTP header} + A szerver a \texttt{Set-Cookie} header segítségével küldi a cookie-t a kliensnek. + \end{block} + + \vspace{0.3cm} + + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{HTTP válasz:} + \small + \begin{verbatim} +HTTP/1.1 200 OK +Set-Cookie: sessionId=abc123 +Set-Cookie: theme=dark +Content-Type: application/json + +{"success": true} + \end{verbatim} + \end{column} + + \begin{column}{0.48\textwidth} + \textbf{Node.js/Express:} + \small + \begin{verbatim} +res.cookie('sessionId', 'abc123'); + +res.cookie('theme', 'dark', { + maxAge: 900000, + httpOnly: true +}); + \end{verbatim} + \end{column} + \end{columns} + + \vspace{0.5cm} + + \begin{itemize} + \item A böngésző automatikusan eltárolja a cookie-t + \item Minden későbbi kérésben a böngésző automatikusan visszaküldi + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Cookie olvasása} + \begin{block}{Cookie HTTP header} + A böngésző minden kérésben visszaküldi a releváns cookie-kat. + \end{block} + + \vspace{0.3cm} + + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{HTTP kérés:} + \small + \begin{verbatim} +GET /api/user HTTP/1.1 +Host: example.com +Cookie: sessionId=abc123; theme=dark + \end{verbatim} + \end{column} + + \begin{column}{0.48\textwidth} + \textbf{Node.js/Express:} + \small + \begin{verbatim} +// cookie-parser middleware +const cookieParser = require('cookie-parser'); +app.use(cookieParser()); + +// Cookie olvasás +app.get('/api/user', (req, res) => { + const sessionId = req.cookies.sessionId; + const theme = req.cookies.theme; + + // ... +}); + \end{verbatim} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}{Cookie típusok} + \begin{columns} + \begin{column}{0.48\textwidth} + \begin{block}{Session Cookie} + \begin{itemize} + \item Nincs Expires/Max-Age + \item Böngésző bezárásakor törlődik + \end{itemize} + + \textbf{Használat:} + \begin{itemize} + \item Ideiglenes session + \end{itemize} + \end{block} + \end{column} + + \begin{column}{0.48\textwidth} + \begin{block}{Persistent Cookie} + \begin{itemize} + \item Van Expires/Max-Age + \item Megmarad újraindítás után + \end{itemize} + + \textbf{Használat:} + \begin{itemize} + \item "Remember me" + \item Preferenciák + \end{itemize} + \end{block} + \end{column} + \end{columns} + + \begin{exampleblock}{Példa} + \texttt{Set-Cookie: sessionId=abc123; Max-Age=3600} + \end{exampleblock} +\end{frame} + +\begin{frame}[shrink=5]{Cookie attribútumok} + \begin{enumerate} + \item \textbf{Expires / Max-Age} + \begin{itemize} + \item Expires: Dátum, Max-Age: mper + \end{itemize} + + \item \textbf{Domain} + \begin{itemize} + \item Mely domain-ekhez küldje + \end{itemize} + + \item \textbf{Path} + \begin{itemize} + \item Mely URL path-okhoz + \end{itemize} + + \item \textbf{Secure} + \begin{itemize} + \item Csak HTTPS-en + \end{itemize} + \end{enumerate} +\end{frame} + +\begin{frame}{Biztonsági attribútumok} + \begin{alertblock}{HttpOnly} + \begin{itemize} + \item JavaScript NEM férhet hozzá + \item \textbf{XSS védelem!} + \end{itemize} + \end{alertblock} + + \begin{alertblock}{Secure} + \begin{itemize} + \item Csak HTTPS-en + \item \textbf{MITM védelem!} + \end{itemize} + \end{alertblock} + + \begin{alertblock}{SameSite} + \begin{itemize} + \item Strict - Csak same-site + \item Lax - GET same-site + \item None - Mindenhol (Secure kötelező!) + \item \textbf{CSRF védelem!} + \end{itemize} + \end{alertblock} +\end{frame} + +\begin{frame}[fragile]{Biztonságos cookie beállítás} + \begin{block}{Production környezetben ajánlott beállítások} + \small + \begin{verbatim} +res.cookie('token', jwtToken, { + httpOnly: true, // XSS védelem - JS nem férhet hozzá + secure: true, // Csak HTTPS - production-ben! + sameSite: 'strict', // CSRF védelem + maxAge: 3600000, // 1 óra (milliszekundumban) + path: '/', // Teljes alkalmazásban elérhető + domain: '.example.com' // Domain és aldomain-ek +}); + \end{verbatim} + \end{block} + + \vspace{0.5cm} + + \begin{alertblock}{Kritikus!} + Authentikációs token-ek mindig legyenek \texttt{httpOnly}, \texttt{secure} és \texttt{sameSite} attribútumokkal ellátva! + \end{alertblock} +\end{frame} + +\begin{frame}[shrink=10]{SameSite részletesen} + \begin{block}{CSRF védelem cookie szinten} + SameSite határozza meg, cookie mikor küldhető cross-site kérésekben. + \end{block} + + \begin{enumerate} + \item \textbf{Strict} + \begin{itemize} + \item Csak same-site + \item Legjobb védelem + \end{itemize} + + \item \textbf{Lax} + \begin{itemize} + \item Top-level GET küldődik + \item POST/PUT/DELETE nem + \end{itemize} + + \item \textbf{None} + \begin{itemize} + \item Mindenhol + \item Securekel kötelező! + \end{itemize} + \end{enumerate} +\end{frame} + +\begin{frame}[fragile]{SameSite példák} + \begin{exampleblock}{Példa forgatókönyv} + \texttt{bank.com} oldalon be vagy jelentkezve cookie-val. + Megnyitsz egy \texttt{evil.com} oldalt, ami próbál kérést küldeni \texttt{bank.com}-ra. + \end{exampleblock} + + \vspace{0.3cm} + + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{SameSite=Strict:} + \small + \begin{verbatim} +Set-Cookie: session=xyz; + SameSite=Strict + \end{verbatim} + + \begin{itemize} + \item \textcolor{red}{$\times$} evil.com $\to$ bank.com POST + \item \textcolor{red}{$\times$} evil.com link $\to$ bank.com + \item \textcolor{green}{$\checkmark$} bank.com $\to$ bank.com + \end{itemize} + \end{column} + + \begin{column}{0.48\textwidth} + \textbf{SameSite=Lax:} + \small + \begin{verbatim} +Set-Cookie: session=xyz; + SameSite=Lax + \end{verbatim} + + \begin{itemize} + \item \textcolor{red}{$\times$} evil.com $\to$ bank.com POST + \item \textcolor{green}{$\checkmark$} evil.com link $\to$ bank.com GET + \item \textcolor{green}{$\checkmark$} bank.com $\to$ bank.com + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}[fragile,shrink=10]{Cookie törlése} + \begin{block}{Logout - cookie invalidálás} + \small + \begin{verbatim} +app.post('/api/logout', (req, res) => { + res.clearCookie('token', { + httpOnly: true, + secure: true, + sameSite: 'strict' + }); + res.json({ message: 'Logged out' }); +}); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[shrink=10]{Cookie biztonság - XSS vs CSRF} + \begin{columns} + \begin{column}{0.48\textwidth} + \begin{alertblock}{XSS} + \textbf{Támadás:} + \begin{itemize} + \item JS injektálás + \item Cookie ellopás + \end{itemize} + + \textbf{Védelem:} + \begin{itemize} + \item HttpOnly + \item Input validáció + \item CSP + \end{itemize} + \end{alertblock} + \end{column} + + \begin{column}{0.48\textwidth} + \begin{alertblock}{CSRF} + \textbf{Támadás:} + \begin{itemize} + \item Jogosulatlan kérés + \item Automatikus cookie + \end{itemize} + + \textbf{Védelem:} + \begin{itemize} + \item SameSite + \item CSRF token + \item Origin check + \end{itemize} + \end{alertblock} + \end{column} + \end{columns} + + \begin{block}{Kombinált} + HttpOnly + Secure + SameSite + CSRF token + \end{block} +\end{frame} + +\begin{frame}[fragile,shrink=10]{CSRF token} + \begin{block}{Double submit pattern} + \small + \begin{verbatim} +const csrf = require('csurf'); +const csrfProtection = csrf({ cookie: { httpOnly: true } }); + +app.use(csrfProtection); + +app.get('/api/csrf-token', (req, res) => { + res.json({ csrfToken: req.csrfToken() }); +}); + +app.post('/api/transfer', (req, res) => { + // CSRF valid automatikus +}); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile,shrink=10]{Cookie és CORS} + \begin{block}{Cross-Origin} + Cookie-k alapból NEM küldődnek cross-origin-ben. + \end{block} + + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{Szerver:} + \small + \begin{verbatim} +app.use(cors({ + origin: 'https://frontend.com', + credentials: true +})); + \end{verbatim} + \end{column} + + \begin{column}{0.48\textwidth} + \textbf{Kliens:} + \small + \begin{verbatim} +fetch('/api/user', { + credentials: 'include' +}) + \end{verbatim} + \end{column} + \end{columns} + + \begin{alertblock}{Fontos!} + credentials: true + 'include' + SameSite=None; Secure + \end{alertblock} +\end{frame} + +\begin{frame}[shrink=10]{Cookie vs localStorage vs sessionStorage} + \begin{small} + \begin{tabular}{|l|c|c|c|} + \hline + & \textbf{Cookie} & \textbf{localStorage} & \textbf{sessionStorage} \\ + \hline + Kapacitás & 4KB & 5-10MB & 5-10MB \\ + \hline + Lejárat & Beállítható & Nincs & Tab bezárás \\ + \hline + HTTP-ben & \textcolor{green}{Igen} & \textcolor{red}{Nem} & \textcolor{red}{Nem} \\ + \hline + XSS védelem & HttpOnly & \textcolor{red}{Nem} & \textcolor{red}{Nem} \\ + \hline + \end{tabular} + \end{small} + + \begin{exampleblock}{Ajánlás} + \textbf{Érzékeny:} HttpOnly Cookie, \textbf{Publikus:} localStorage + \end{exampleblock} +\end{frame} + +\begin{frame}[fragile,shrink=10]{Signed Cookies} + \begin{block}{Integritás védelem} + HMAC aláírással elliatott cookie, megakadályozza manipulációt. + \end{block} + + \begin{verbatim} +const cookieParser = require('cookie-parser'); +app.use(cookieParser('secret-key')); + +app.get('/set', (req, res) => { + res.cookie('userId', '12345', { signed: true }); + res.send('Set'); +}); + +app.get('/get', (req, res) => { + const userId = req.signedCookies.userId; + res.json({ userId }); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[shrink=5]{Cookie best practices} + \begin{block}{Authentikációs cookie-k} + \begin{enumerate} + \item \textbf{HttpOnly:} JS nem fér hozzá + \item \textbf{Secure:} Csak HTTPS + \item \textbf{SameSite:} Strict/Lax + \item \textbf{Rövid Max-Age:} 15-60 perc + \item \textbf{Path:} Csak szükséges + \item \textbf{Signed cookie:} Manipuláció ellen + \end{enumerate} + \end{block} + + \begin{alertblock}{Production template} + \small + \texttt{res.cookie('token', value, \{httpOnly: true, secure: true, sameSite: 'strict', maxAge: 3600000\})} + \end{alertblock} +\end{frame} + +\begin{frame}[shrink=5]{\u00d6sszefoglalás} + \begin{itemize} + \item \textbf{Cookie} = Kis adat szerver és kliens között + \item \textbf{Típusok:} Session (ideiglenes) vs Persistent + \item \textbf{Attribútumok:} Expires, Domain, Path, Secure, HttpOnly, SameSite + \item textbf{HttpOnly:} XSS védelem + \item \textbf{Secure:} HTTPS - MITM védelem + \item \textbf{SameSite:} CSRF védelem + \item \textbf{CORS:} credentials: true + 'include' + \item \textbf{Biztonság:} HttpOnly + Secure + SameSite + \end{itemize} + + \begin{exampleblock}{Authentikációban} + Cookie a \textbf{legbiztonságosabb} módszer token tárolására. + \end{exampleblock} +\end{frame} + diff --git a/Backend_ppt/authn_z/hash.tex b/Backend_ppt/authn_z/hash.tex new file mode 100644 index 0000000..ca083ef --- /dev/null +++ b/Backend_ppt/authn_z/hash.tex @@ -0,0 +1,153 @@ +\section{Hash} + +\begin{frame}{Mi az a hash?} + \begin{block}{Definíció} + Tetszőleges hosszúságú bemenetet rögzített méretű lenyomattá alakít. + \end{block} + + \begin{itemize} + \item Egyirányű függvény (nem visszafejthető) + \item Gyorsan számolható + \item Kis változás teljesen más hasht eredményez + \end{itemize} + + \begin{alertblock}{Fontos} + Hash $\neq$ titkosítás: nem visszafejthető! + \end{alertblock} +\end{frame} + +\begin{frame}{Hash tulajdonságok} + \begin{itemize} + \item \textbf{Deterministic}: azonos bemenet = azonos kimenet + \item \textbf{Preimage resistance}: nehéz visszafejteni + \item \textbf{Second preimage}: nehéz másik bemenetet találni + \item \textbf{Collision resistance}: nehéz két különböző bemenetet találni azonos hash-sel + \end{itemize} + + \begin{exampleblock}{Példa} + \texttt{hash("jelszo") = 5f4dcc3b5aa765d61d8327deb882cf99} + \end{exampleblock} +\end{frame} + +\begin{frame}{Gyenge vs. erős hash} + \begin{columns} + \begin{column}{0.48\textwidth} + \begin{block}{Gyenge hash} + \begin{itemize} + \item MD5, SHA1 (elavult) + \item Gyors → brute force könnyebb + \item Ütközések ismertek + \end{itemize} + \end{block} + \end{column} + + \begin{column}{0.48\textwidth} + \begin{block}{Erős hash} + \begin{itemize} + \item bcrypt, Argon2, scrypt + \item Lassú, konfigurálható + \item Salt + work factor támogatás + \end{itemize} + \end{block} + \end{column} + \end{columns} + + \vspace{0.4cm} + + \begin{alertblock}{Jelszavakhoz} + Soha ne használj általános hash-t (MD5, SHA1) jelszavak tárolásához! + \end{alertblock} +\end{frame} + +\begin{frame}{Salt és Pepper} + \begin{block}{Miért fontos?} + \textbf{Salt:} véletlen érték, amit a jelszóhoz adunk hash előtt. + \end{block} + + \begin{itemize} + \item Védelem rainbow table ellen + \item Minden jelszónál egyedi salt + \item Salt-et tárolhatjuk adatbázisban + \end{itemize} + + \begin{exampleblock}{Pepper} + Közös titkos kulcs, szerver konfigban tárolva. + \end{exampleblock} +\end{frame} + +\begin{frame}{Password hashing algoritmusok} + \begin{itemize} + \item \textbf{bcrypt} + \begin{itemize} + \item Beépített salt és work factor + + \end{itemize} + \item \textbf{scrypt} + \begin{itemize} + \item Memória-igényes → GPU támadások ellen jobb + \end{itemize} + \item \textbf{Argon2} + \begin{itemize} + \item Modern szabvány (PHC winner) + \item Paraméterezhető (time, memory, parallelism) + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}[fragile,shrink=10]{bcrypt használat (Node.js)} + \begin{exampleblock}{Hash készítés} + \tiny + \begin{verbatim} +const bcrypt = require('bcrypt'); +const saltRounds = 12; + +const hashPassword = async (password) => { + const salt = await bcrypt.genSalt(saltRounds); + return bcrypt.hash(password, salt); +}; + \end{verbatim} + \end{exampleblock} + + \begin{exampleblock}{Ellenőrzés} + \tiny + \begin{verbatim} +const isValid = await bcrypt.compare(password, storedHash); + \end{verbatim} + \end{exampleblock} +\end{frame} + +\begin{frame}{Hash-elés felhasználása} + \begin{itemize} + \item Jelszó tárolás + \item Fájl integritás ellenőrzés + \item Digitális aláírások + \item Cache kulcsok + \end{itemize} + + \begin{alertblock}{Megjegyzés} + Authentikációban: jelszó soha ne legyen visszaolvasható. + \end{alertblock} +\end{frame} + +\begin{frame}{Hash Best Practices} + \begin{itemize} + \item Jelszhoz \textbf{bcrypt/Argon2/scrypt} + \item Egyedi salt minden jelszóhoz + \item Work factor beállítása (pl. bcrypt 10-12) + \item Soha ne plain text + \item Rate limiting + lockout + \end{itemize} +\end{frame} + +\begin{frame}{Összefoglalás - Hash} + \begin{itemize} + \item Hash = egyirányú lenyomat + \item Jelszavakhoz speciális algoritmus kell + \item Salt és pepper növeli a biztonságot + \item Argon2 a legajánlottabb modern választás + \item Hash nem titkosítás! + \end{itemize} + + \vspace{0.5cm} + +\end{frame} \ No newline at end of file diff --git a/Backend_ppt/authn_z/jwt.tex b/Backend_ppt/authn_z/jwt.tex new file mode 100644 index 0000000..c7fe545 --- /dev/null +++ b/Backend_ppt/authn_z/jwt.tex @@ -0,0 +1,194 @@ +\section{JWT} + +\begin{frame}[shrink=15]{Mi az a JWT?} + \begin{block}{JSON Web Token (RFC 7519)} + Kompakt, önálló token információ biztonságos továbbításához. + \end{block} + \begin{itemize} + \item Digitálisan aláírt, Base64URL kódolt + \item Használat: authentikáció, stateless session + \item \textbf{NEM} titkosított - payload olvasható! + \end{itemize} +\end{frame} + +\begin{frame}[fragile,shrink=15]{JWT formátum} + \texttt{\textcolor{red}{HEADER}.\textcolor{purple}{PAYLOAD}.\textcolor{blue}{SIGNATURE}} + \begin{tiny} + \begin{verbatim} +eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZ +SI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36P + \end{verbatim} + \end{tiny} + \begin{itemize} + \item \textcolor{red}{Header}: Algoritmus + token típus + \item \textcolor{purple}{Payload}: Claims (user adatok) + \item \textcolor{blue}{Signature}: Integritás védelem + \end{itemize} +\end{frame} + +\begin{frame}[fragile,shrink=15]{JWT Header \& Payload} + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{Header:} + \begin{verbatim} +{ + "alg": "HS256", + "typ": "JWT" +} + \end{verbatim} + \end{column} + \begin{column}{0.48\textwidth} + \textbf{Payload:} + \begin{verbatim} +{ + "sub": "1234", + "name": "John", + "iat": 1516239022, + "exp": 1516242622 +} + \end{verbatim} + \end{column} + \end{columns} + \begin{alertblock}{Fontos} + Ne tároljunk jelszót payload-ban! + \end{alertblock} +\end{frame} + +\begin{frame}[fragile,shrink=15]{JWT Signature} + \begin{verbatim} +HMACSHA256( + base64(header) + "." + base64(payload), + secret +) + \end{verbatim} + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{HMAC:} Egy kulcs, gyors (HS256) + \end{column} + \begin{column}{0.48\textwidth} + \textbf{RSA:} Privát+publikus, biztonságosabb (RS256) + \end{column} + \end{columns} +\end{frame} + +\begin{frame}[fragile,shrink=20]{JWT generálás Node.js} + \begin{verbatim} +const jwt = require('jsonwebtoken'); + +const payload = { userId: user.id, role: user.role }; + +const token = jwt.sign( + payload, + process.env.JWT_SECRET, + { expiresIn: '1h' } +); + +res.json({ token }); + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{JWT validálás Node.js} + \begin{verbatim} +const token = req.headers.authorization?.split(' ')[1]; + +if (!token) return res.status(401).json({ error: 'No token' }); + +try { + const decoded = jwt.verify(token, process.env.JWT_SECRET); + req.user = decoded; + next(); +} catch (err) { + res.status(403).json({ error: 'Invalid' }); +} + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{JWT middleware} + \begin{verbatim} +const authJWT = (req, res, next) => { + const token = req.headers.authorization?.split(' ')[1]; + if (!token) return res.status(401).send('Token required'); + + jwt.verify(token, process.env.JWT_SECRET, (err, user) => { + if (err) return res.status(403).send('Invalid'); + req.user = user; + next(); + }); +}; + +app.get('/protected', authJWT, (req, res) => { + res.json({ data: 'Secret', user: req.user }); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[shrink=15]{JWT vs Session} + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{JWT:} + \begin{itemize} + \item Stateless + \item Skálázható + \item Cross-domain + \item Nehéz visszavonni + \item Token méret + \end{itemize} + \end{column} + \begin{column}{0.48\textwidth} + \textbf{Session:} + \begin{itemize} + \item Stateful + \item Szerver tárolja + \item Könnyű visszavonás + \item Nehezebb skálázás + \item Kis cookie + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}[shrink=15]{Access \& Refresh Token} + \begin{block}{Két token stratégia} + \textbf{Access token}: Rövid élet (15 perc), API hozzáférés\\ + \textbf{Refresh token}: Hosszú élet (7 nap), új access token generálás + \end{block} + \begin{enumerate} + \item Login $\to$ Access + Refresh token + \item API kérés Access token-nel + \item Access lejár $\to$ Refresh-el új Access-t kér + \item Refresh lejár $\to$ Újra login + \end{enumerate} +\end{frame} + +\begin{frame}[fragile,shrink=20]{Refresh Token példa} + \begin{verbatim} +app.post('/refresh', (req, res) => { + const { refreshToken } = req.body; + if (!refreshToken) return res.sendStatus(401); + + jwt.verify(refreshToken, REFRESH_SECRET, (err, user) => { + if (err) return res.sendStatus(403); + + const accessToken = jwt.sign( + { userId: user.userId }, + ACCESS_SECRET, + { expiresIn: '15m' } + ); + res.json({ accessToken }); + }); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[shrink=15]{JWT Security Best Practices} + \begin{enumerate} + \item Rövid lejárat (15-60 perc) + \item Erős secret kulcs (min 256 bit) + \item HTTPS kötelező + \item Ne tároljunk érzékeny adatot payload-ban + \item Validáld mindig az \texttt{exp} és \texttt{iat} claim-eket + \item Használj RS256-ot HS256 helyett production-ben + \item Refresh token rotation + \item Token blacklist megfontolása + \end{enumerate} +\end{frame} diff --git a/Backend_ppt/authn_z/jwt_old.tex b/Backend_ppt/authn_z/jwt_old.tex new file mode 100644 index 0000000..e515ef0 --- /dev/null +++ b/Backend_ppt/authn_z/jwt_old.tex @@ -0,0 +1,549 @@ +\section{JWT} + +\begin{frame}{Mi az a JWT?} + \begin{block}{JSON Web Token (RFC 7519)} + Nyílt szabványú, kompakt és önálló módszer információ biztonságos továbbítására. + \end{block} + + \begin{itemize} + \item \textbf{Kompakt:} Kis méret, URL/header-ben is + \item \textbf{Önálló:} Minden információt tartalmaz + \item \textbf{Biztonságos:} Digitálisan aláírt + + \item \textbf{Használat:} + \begin{itemize} + \item Authentikáció + \item Információ csere + \item Stateless session + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}[fragile,shrink=10]{JWT formátum} + \begin{block}{Három részből áll, ponttal elválasztva} + \texttt{\textcolor{red}{HEADER}.\textcolor{purple}{PAYLOAD}.\textcolor{blue}{SIGNATURE}} + \end{block} + + \begin{exampleblock}{Példa JWT} + \tiny + \begin{verbatim} +eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZ +SI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36P +OkmLXOUqhfKJ4 + \end{verbatim} + \end{exampleblock} + + \begin{itemize} + \item \textcolor{red}{\textbf{Header:}} Token típusa és algoritmus + \item \textcolor{purple}{\textbf{Payload:}} Claims (állítások) - felhasználói adatok + \item \textcolor{blue}{\textbf{Signature:}} Aláírás - integritás ellenőrzés + \end{itemize} + + \begin{alertblock}{Fontos!} + A JWT Base64URL kódolású, \textbf{NEM} titkosított! A payload tartalma olvasható! + \end{alertblock} +\end{frame} + +\begin{frame}[fragile]{JWT Header} + \begin{block}{Token metaadatok} + Token típusa és aláírási algoritmus. + \end{block} + + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{JSON:} + \begin{verbatim} +{ + "alg": "HS256", + "typ": "JWT" +} + \end{verbatim} + + \begin{itemize} + \item \texttt{alg}: Algoritmus + \item \texttt{typ}: Token típus + \end{itemize} + \end{column} + + \begin{column}{0.48\textwidth} + \textbf{Kódolt:} + \begin{verbatim} +eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 + \end{verbatim} + + \textbf{Algoritmusok:} + \begin{itemize} + \item HS256 - HMAC + \item RS256 - RSA + \item ES256 - ECDSA + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}[fragile,shrink=5]{JWT Payload (Claims)} + \begin{block}{Felhasználói adatok és meta} + Claims (allítoltak) a felhasználóról és tokenről. + \end{block} + + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{Registered:} + \begin{itemize} + \item \texttt{iss} - Kibocsátó + \item \texttt{sub} - Tárgy/user ID + \item \texttt{aud} - Címzett + \item \texttt{exp} - Lejárat + \item \texttt{iat} - Kiállítás + \end{itemize} + \end{column} + + \begin{column}{0.48\textwidth} + \textbf{Példa:} + \small + \begin{verbatim} +{ + "sub": "1234567890", + "name": "John Doe", + "role": "admin", + "iat": 1516239022, + "exp": 1516242622 +} + \end{verbatim} + \end{column} + \end{columns} + + \begin{alertblock}{Figyelem!} + Ne tároljunk érzékeny adatokat (jelszó) payload-ban! + \end{alertblock} +\end{frame} + +\begin{frame}[fragile,shrink=5]{JWT Signature} + \begin{block}{Digitális aláírás} + Biztosítja a token integritását és hitelességét. + \end{block} + + \textbf{Signature (HMAC SHA256):} + \begin{verbatim} +HMACSHA256( + base64UrlEncode(header) + "." + base64UrlEncode(payload), + secret +) + \end{verbatim} + + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{HMAC (Symmetric):} + \begin{itemize} + \item Egy kulcs + \item Gyorsabb + \item HS256 + \end{itemize} + \end{column} + + \begin{column}{0.48\textwidth} + \textbf{RSA (Asymmetric):} + \begin{itemize} + \item Privát + publikus + \item Biztonságosabb + \item RS256 + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}{JWT működése} + \begin enumerate} + \item \textbf{Bejelentkezés:} + \begin{itemize} + \item Username + password + \item Szerver validál + \end{itemize} + + \item \textbf{Token generálás:} + \begin{itemize} + \item JWT létrehozás user adatokkal + \item Aláírás titkos kulccsal + \end{itemize} + + \item \textbf{Tárolás:} + \begin{itemize} + \item localStorage / cookie + \end{itemize} + + \item \textbf{API kérések:} + \begin{itemize} + \item \texttt{Authorization: Bearer } + \item Szerver validálja + \end{itemize} + \end{enumerate} +\end{frame} + +\begin{frame}[fragile,shrink=10]{JWT generálás Node.js-ben} + \begin{block}{jsonwebtoken könyvtár használata} + \small + \begin{verbatim} +const jwt = require('jsonwebtoken'); + +const payload = { + userId: user.id, + email: user.email, + role: user.role +}; + +const token = jwt.sign( + payload, + process.env.JWT_SECRET, + { expiresIn: '1h', issuer: 'myapp' } +); + +res.json({ token, expiresIn: 3600 }); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile,shrink=10]{JWT validálás Node.js-ben} + \begin{block}{Token ellenőrzés} + \small + \begin{verbatim} +const authHeader = req.headers.authorization; +const token = authHeader?.split(' ')[1]; + +if (!token) { + return res.status(401).json({ error: 'No token' }); +} + +try { + const decoded = jwt.verify(token, process.env.JWT_SECRET); + req.user = decoded; + next(); +} catch (error) { + return res.status(403).json({ error: 'Invalid' }); +} + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile,shrink=10]{JWT middleware Express-ben} + \begin{block}{Védett route-ok} + \small + \begin{verbatim} +const authenticateJWT = (req, res, next) => { + const token = req.headers.authorization?.split(' ')[1]; + + if (!token) return res.status(401).json({ error: 'Token required' }); + + jwt.verify(token, process.env.JWT_SECRET, (err, user) => { + if (err) return res.status(403).json({ error: 'Invalid token' }); + req.user = user; + next(); + }); +}; + +app.get('/api/protected', authenticateJWT, (req, res) => { + res.json({ message: 'Protected', user: req.user }); +}); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}{JWT vs Session} + \begin{columns} + \begin{column}{0.48\textwidth} + \begin{block}{JWT (Stateless)} + \textbf{Előnyök:} + \begin{itemize} + \item Skálázható + \item Nincs szerver-oldali tárolás + \item Cross-domain működés + \item Mobile-friendly + \end{itemize} + + \vspace{0.3cm} + + \textbf{Hátrányok:} + \begin{itemize} + \item Nehéz visszavonni + \item Token méret + \item XSS sebezhetőség (localStorage) + \end{itemize} + \end{block} + \end{column} + + \begin{column}{0.48\textwidth} + \begin{block}{Session (Stateful)} + \textbf{Előnyök:} + \begin{itemize} + \item Azonnali visszavonás + \item Kis cookie méret + \item Biztonságosabb token tárolás + \end{itemize} + + \vspace{0.3cm} + + \textbf{Hátrányok:} + \begin{itemize} + \item Szerver-oldali memória + \item Nehezebb skálázás + \item CORS problémák + \item Session store szükséges + \end{itemize} + \end{block} + \end{column} + \end{columns} + + \vspace{0.5cm} + + \begin{alertblock}{Melyiket válasszuk?} + Függ az alkalmazás követelményeitől: méret, skálázhatóság, biztonság, komplexitás. + \end{alertblock} +\end{frame} + +\begin{frame}{Token tárolás a kliens oldalon} + \begin{columns} + \begin{column}{0.48\textwidth} + \begin{block}{localStorage} + \begin{itemize} + \item Egyszerű + \item JS hozzáférés + \item Megosztott + \end{itemize} + + \textcolor{red}{\textbf{XSS!}} + \begin{itemize} + \item \textcolor{red}{JS hozzáférhet} + \end{itemize} + \end{block} + \end{column} + + \begin{column}{0.48\textwidth} + \begin{block}{HttpOnly Cookie} + \begin{itemize} + \item JS NEM fér hozzá + \item Automatikus + \item XSS védett + \end{itemize} + + \textcolor{red}{\textbf{CSRF}} + \begin{itemize} + \item \textcolor{red}{Védelem kell} + \end{itemize} + \end{block} + \end{column} + \end{columns} + + \begin{exampleblock}{Ajánlás} + HttpOnly, Secure, SameSite cookie a legbiztonságosabb. + \end{exampleblock} +\end{frame} + +\begin{frame}[fragile]{JWT tárolás HttpOnly Cookie-ban} + \begin{block}{Token beállítás cookie-ban} + \small + \begin{verbatim} +// Login endpoint +app.post('/api/login', (req, res) => { + // ... authentikáció logika ... + + const token = jwt.sign(payload, secret, { expiresIn: '1h' }); + + res.cookie('token', token, { + httpOnly: true, // JavaScript nem férhet hozzá + secure: true, // Csak HTTPS-en keresztül + sameSite: 'strict',// CSRF védelem + maxAge: 3600000 // 1 óra milliszekundumban + }); + + res.json({ success: true, message: 'Logged in' }); +}); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{JWT olvasás Cookie-ból} + \begin{block}{Cookie-parser middleware} + \small + \begin{verbatim} +const cookieParser = require('cookie-parser'); +app.use(cookieParser()); + +const authenticateJWT = (req, res, next) => { + // Token a cookie-ból + const token = req.cookies.token; + + if (!token) { + return res.status(401).json({ error: 'Not authenticated' }); + } + + try { + const decoded = jwt.verify(token, process.env.JWT_SECRET); + req.user = decoded; + next(); + } catch (error) { + return res.status(403).json({ error: 'Invalid token' }); + } +}; + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[shrink=5]{Refresh Token stratégia} + \begin{block}{Miért szükséges?} + Access tokenek rövidek (15 perc). Refresh tokennel új access token kérhető. + \end{block} + + \begin{itemize} + \item \textbf{Access Token:} + \begin{itemize} + \item Rövid (15-60 perc) + \item API kérésekhez + \end{itemize} + + \item \textbf{Refresh Token:} + \begin{itemize} + \item Hosszú (7-30 nap) + \item Új access tokenhez + \item HttpOnly cookie-ban + \item DB-ben tárolva + \end{itemize} + \end{itemize} + + \begin{alertblock}{Best Practice} + Refresh token rotation: minden refresh-nél új refresh token is. + \end{alertblock} +\end{frame} + +\begin{frame}[fragile]{Refresh Token implementáció} + \begin{block}{Token refresh endpoint} + \small + \begin{verbatim} +app.post('/api/refresh', (req, res) => { + const refreshToken = req.cookies.refreshToken; + + if (!refreshToken) { + return res.status(401).json({ error: 'No refresh token' }); + } + + try { + // Refresh token validálás + const decoded = jwt.verify(refreshToken, process.env.REFRESH_SECRET); + + // Ellenőrizzük az adatbázisban + const storedToken = await RefreshToken.findOne({ + token: refreshToken, + userId: decoded.userId + }); + + if (!storedToken) { + return res.status(403).json({ error: 'Invalid refresh token' }); + } + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Refresh Token implementáció (folyt.)} + \begin{block}{Új tokenek generálása} + \small + \begin{verbatim} + // Új access token + const accessToken = jwt.sign( + { userId: decoded.userId, role: decoded.role }, + process.env.JWT_SECRET, + { expiresIn: '15m' } + ); + + // Új refresh token (rotation) + const newRefreshToken = jwt.sign( + { userId: decoded.userId }, + process.env.REFRESH_SECRET, + { expiresIn: '7d' } + ); + + // Régi token törlése, új mentése az adatbázisba + await RefreshToken.deleteOne({ token: refreshToken }); + await RefreshToken.create({ token: newRefreshToken, userId: decoded.userId }); + + res.cookie('refreshToken', newRefreshToken, { httpOnly: true, ... }); + res.json({ accessToken }); + } catch (error) { + res.status(403).json({ error: 'Invalid refresh token' }); + } +}); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[shrink=5]{JWT biztonság best practices} + \begin{alertblock}{Kritikus pontok} + \begin{itemize} + \item \textbf{Titkos kulcs:} Erős, random, env-ben + \item \textbf{HTTPS:} Mindig! + \item \textbf{Lejárat:} Max 1 óra + \item \textbf{Érzeky adatok:} Ne JWT-ben + \item \textbf{Algoritmus:} Ellenőrizd (ne 'none') + \end{itemize} + \end{alertblock} + + \begin{block}{További ajánlások} + \begin{itemize} + \item HttpOnly cookie + \item Refresh token rotation + \item Rate limiting + \item Aud és Iss validálás + \end{itemize} + \end{block} +\end{frame} + +\begin{frame}{Gyakori JWT hibák és támadások} + \begin{alertblock}{Gyakori sebezhetőségek} + \begin{enumerate} + \item \textbf{None algoritmus támadás} + \begin{itemize} + \item Header: \texttt{"alg": "none"} - aláírás nélküli token + \item Védelem: Mindig ellenőrizzük az algoritmust + \end{itemize} + + \item \textbf{Gyenge titkos kulcs} + \begin{itemize} + \item Rövid vagy közismert kulcs + \item Védelem: Min. 256-bit random kulcs + \end{itemize} + + \item \textbf{Token kiszivárogtatás} + \begin{itemize} + \item XSS támadás localStorage-ból + \item Védelem: HttpOnly cookie használata + \end{itemize} + + \item \textbf{Algoritmus konfúzió} + \begin{itemize} + \item RS256 publikus kulcs HMAC secret-ként használva + \item Védelem: Explicit algoritmus megadása validáláskor + \end{itemize} + \end{enumerate} + \end{alertblock} +\end{frame} + +\begin{frame}{Összefoglalás} + \begin{itemize} + \item \textbf{JWT} = Kompakt, önálló, biztonságos token formátum + \item \textbf{Struktúra:} Header.Payload.Signature + \item \textbf{Előnyök:} Stateless, skálázható, cross-domain + \item \textbf{Claims:} Registered (exp, iat, sub) és Custom (role, email) + \item \textbf{Tárolás:} HttpOnly cookie a legbiztonságosabb + \item \textbf{Refresh token:} Új access token kéréshez hosszú élettartammal + \item \textbf{Biztonság:} HTTPS, erős secret, rövid lejárat, validálás + \end{itemize} + + \vspace{0.5cm} + + \begin{exampleblock}{Mikor használjuk a JWT-t?} + \begin{itemize} + \item RESTful API authentikáció + \item Microservice architektúra + \item Mobile alkalmazások + \item Single Page Applications (SPA) + \item Stateless session kezelés + \end{itemize} + \end{exampleblock} +\end{frame} diff --git a/Backend_ppt/authn_z/middlewares.tex b/Backend_ppt/authn_z/middlewares.tex new file mode 100644 index 0000000..a72dd85 --- /dev/null +++ b/Backend_ppt/authn_z/middlewares.tex @@ -0,0 +1,205 @@ +\section{Middleware} + +\begin{frame}[shrink=15]{Mi az a middleware?} + \begin{block}{Definíció} + Függvény HTTP kérés-válasz között, hozzáfér \texttt{req}, \texttt{res}, \texttt{next}-hez. + \end{block} + \begin{itemize} + \item Láncolható + \item Kérés előfeldolgozás, válasz utófeldolgozás + \item Kérés megszakítható + \end{itemize} +\end{frame} + +\begin{frame}[shrink=15]{Middleware működése} + \begin{center} + \begin{tikzpicture}[node distance=1.4cm, auto] + \node (browser) [rectangle, draw, text width=1.5cm, text centered] {Browser}; + \node (mw1) [rectangle, draw, right of=browser, xshift=1cm, text width=2cm, text centered] {MW 1\\Logger}; + \node (mw2) [rectangle, draw, right of=mw1, xshift=1.5cm, text width=2cm, text centered] {MW 2\\Auth}; + \node (route) [rectangle, draw, right of=mw2, xshift=1.5cm, text width=1.5cm, text centered] {Route}; + + \draw[->, thick] (browser) -- node[above] {Req} (mw1); + \draw[->, thick] (mw1) -- node[above] {\tiny next()} (mw2); + \draw[->, thick] (mw2) -- node[above] {\tiny next()} (route); + \draw[->, thick, dashed] (route) -- node[below] {Res} (browser); + \end{tikzpicture} + \end{center} + \begin{alertblock}{Fontos} + \texttt{next()} nélkül kérés megáll! + \end{alertblock} +\end{frame} + +\begin{frame}[shrink=15]{Middleware típusok} + \begin{enumerate} + \item \textbf{Application-level}: \texttt{app.use()} + \item \textbf{Router-level}: \texttt{router.use()} + \item \textbf{Error-handling}: \texttt{(err, req, res, next)} + \item \textbf{Built-in}: \texttt{express.json()}, \texttt{express.static()} + \item \textbf{Third-party}: \texttt{cors}, \texttt{helmet}, \texttt{morgan} + \end{enumerate} +\end{frame} + +\begin{frame}[fragile,shrink=20]{Logger middleware} + \begin{verbatim} +const logger = (req, res, next) => { + console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`); + next(); +}; + +app.use(logger); + +app.get('/', (req, res) => { + res.json({ msg: 'Hello' }); +}); + +// Kimenet: +// [2026-02-24T10:30:15.000Z] GET / + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{Request timing middleware} + \begin{verbatim} +const timer = (req, res, next) => { + req.startTime = Date.now(); + res.on('finish', () => { + const duration = Date.now() - req.startTime; + console.log(`${req.method} ${req.url} - ${duration}ms`); + }); + next(); +}; + +app.use(timer); + +// GET /api/users - 145ms + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{Validation middleware} + \begin{verbatim} +const validateEmail = (req, res, next) => { + const { email } = req.body; + const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + + if (!email || !re.test(email)) { + return res.status(400).json({ error: 'Invalid email' }); + } + next(); +}; + +app.post('/register', validateEmail, (req, res) => { + res.json({ success: true }); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{Auth middleware} + \begin{verbatim} +const auth = (req, res, next) => { + const token = req.headers.authorization?.split(' ')[1]; + + if (!token) { + return res.status(401).json({ error: 'Token required' }); + } + + try { + const decoded = jwt.verify(token, SECRET); + req.user = decoded; + next(); + } catch (err) { + res.status(403).json({ error: 'Invalid token' }); + } +}; + +app.get('/protected', auth, (req, res) => { + res.json({ user: req.user }); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{Role-based middleware} + \begin{verbatim} +const requireRole = (role) => { + return (req, res, next) => { + if (req.user.role !== role) { + return res.status(403).json({ error: 'Forbidden' }); + } + next(); + }; +}; + +app.delete('/user/:id', auth, requireRole('admin'), (req, res) => { + res.json({ deleted: true }); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{Error handling middleware} + \begin{verbatim} +// Mindig utolsóként! +app.use((err, req, res, next) => { + console.error(err.stack); + + res.status(err.status || 500).json({ + error: err.message || 'Internal Server Error' + }); +}); + +// Használat +app.get('/error', (req, res, next) => { + const err = new Error('Something broke!'); + err.status = 500; + next(err); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{CORS middleware} + \begin{verbatim} +const cors = require('cors'); + +// Minden origin engedélyezése +app.use(cors()); + +// Specifikus beállítás +app.use(cors({ + origin: 'https://frontend.com', + credentials: true, + methods: ['GET', 'POST', 'PUT', 'DELETE'] +})); + \end{verbatim} +\end{frame} + +\begin{frame}[shrink=15]{Built-in middleware} + \begin{itemize} + \item \texttt{express.json()}: JSON body parsing + \item \texttt{express.urlencoded()}: URL-encoded body parsing + \item \texttt{express.static()}: Static fájlok kiszolgálása + \end{itemize} + \begin{exampleblock}{Használat} + \texttt{app.use(express.json());}\\ + \texttt{app.use(express.static('public'));} + \end{exampleblock} +\end{frame} + +\begin{frame}[shrink=15]{Third-party middleware} + \begin{description} + \item[helmet] HTTP security headers + \item[morgan] HTTP request logger + \item[compression] Response compression (gzip) + \item[cookie-parser] Cookie parsing + \item[express-session] Session kezelés + \item[passport] Authentication + \end{description} +\end{frame} + +\begin{frame}[shrink=15]{Middleware best practices} + \begin{enumerate} + \item Mindig hívd meg \texttt{next()}-et (vagy küldjél választ) + \item Error middleware utolsóként + \item Sorrendiség számít! + \item Global middleware-ek előre (\texttt{cors}, \texttt{helmet}) + \item Route-specifikus middleware-ek közvetlenül route-hoz + \item Async middleware-eknél használj try-catch-et + \end{enumerate} +\end{frame} diff --git a/Backend_ppt/authn_z/middlewares_old.tex b/Backend_ppt/authn_z/middlewares_old.tex new file mode 100644 index 0000000..563759e --- /dev/null +++ b/Backend_ppt/authn_z/middlewares_old.tex @@ -0,0 +1,555 @@ +\section{Middleware} + +\begin{frame}{Mi az a middleware?} + \begin{block}{Definíció} + Függvény, amely HTTP kérés és válasz között fut, hozzáfér \texttt{req}, \texttt{res}, \texttt{next}-hez. + \end{block} + + \begin{itemize} + \item Láncolható függvények + \item Kérés előfeldolgozás + \item Válasz utófeldolgozás + \item Kérés megszakítás + \end{itemize} + + \begin{exampleblock}{Express middleware} + \texttt{function middleware(req, res, next) \{ ... \}} + \end{exampleblock} +\end{frame} + +\begin{frame}[shrink=5]{Middleware működése} + \begin{center} + \begin{tikzpicture}[node distance=1.5cm, auto] + \node (browser) [rectangle, draw, text width=2cm, text centered] {Browser}; + \node (mw1) [rectangle, draw, right of=browser, xshift=1.5cm, text width=2.5cm, text centered] {Middleware 1\\(Logger)}; + \node (mw2) [rectangle, draw, right of=mw1, xshift=2cm, text width=2.5cm, text centered] {Middleware 2\\(Auth)}; + \node (route) [rectangle, draw, right of=mw2, xshift=2cm, text width=2cm, text centered] {Route Handler}; + + \draw[->, thick] (browser) -- node[above] {Request} (mw1); + \draw[->, thick] (mw1) -- node[above] {\texttt{next()}} (mw2); + \draw[->, thick] (mw2) -- node[above] {\texttt{next()}} (route); + \draw[->, thick, dashed] (route) -- node[below] {Response} (browser); + \end{tikzpicture} + \end{center} + + \begin{alertblock}{Fontos!} + Ha nem hívod meg a \texttt{next()}-et, a kérés megáll és nem jut el a következő middleware-hez vagy route handler-hez! + \end{alertblock} +\end{frame} + +\begin{frame}[shrink=5]{Middleware típusok} + \begin{enumerate} + \item \textbf{Application-level} + \begin{itemize} + \item Egész app-ra + \end{itemize} + + \item \textbf{Router-level} + \begin{itemize} + \item Adott routerre + \end{itemize} + + \item \textbf{Error-handling} + \begin{itemize} + \item 4 param: \texttt{(err, req, res, next)} + \end{itemize} + + \item \textbf{Built-in} + \begin{itemize} + \item \texttt{express.json()} + \end{itemize} + + \item \textbf{Third-party} + \begin{itemize} + \item \texttt{cors}, \texttt{helmet} + \end{itemize} + \end{enumerate} +\end{frame} + +\begin{frame}[fragile,shrink=10]{Egyszerű logger middleware} + \begin{block}{Request logging - 1. rész} + \small + \begin{verbatim} +const express = require('express'); +const app = express(); + +const logger = (req, res, next) => { + const timestamp = new Date().toISOString(); + console.log(`[${timestamp}] ${req.method} ${req.url}`); + next(); +}; + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile,shrink=10]{Egyszerű logger middleware (folyt.)} + \begin{block}{Request logging - 2. rész (használat)} + \small + \begin{verbatim} +app.use(logger); + +app.get('/', (req, res) => { + res.json({ message: 'Hello World' }); +}); + +app.get('/users', (req, res) => { + res.json({ users: ['Alice', 'Bob'] }); +}); + +app.listen(3000); + +// Kimenet: +// [2026-02-23T10:30:15.000Z] GET / +// [2026-02-23T10:30:20.000Z] GET /users + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile,shrink=10]{Request timing middleware} + \begin{block}{Válaszidő mérése} + \small + \begin{verbatim} +const requestTimer = (req, res, next) => { + req.startTime = Date.now(); + + res.on('finish', () => { + const duration = Date.now() - req.startTime; + console.log(`${req.method} ${req.url} - ${duration}ms`); + }); + + next(); +}; + +app.use(requestTimer); + +// Kimenet: +// GET /api/users - 145ms +// POST /api/login - 523ms + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Validation middleware} + \begin{block}{Input validáció - 1. rész} + \small + \begin{verbatim} +// email validáló middleware +const validateEmail = (req, res, next) => { + const { email } = req.body; + + if (!email) { + return res.status(400).json({ + error: 'Email is required' + }); + } + + const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + if (!emailRegex.test(email)) { + return res.status(400).json({ + error: 'Invalid email format' + }); + } + + next(); // Validáció sikeres, tovább +}; + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Validation middleware (folyt.)} + \begin{block}{Input validáció - 2. rész (használat)} + \small + \begin{verbatim} +app.use(express.json()); // Body parser middleware + +// Route-specific middleware +app.post('/register', validateEmail, (req, res) => { + const { email, password } = req.body; + + // Email már validálva van a middleware által + // Regisztráció logika... + + res.json({ message: 'User registered', email }); +}); + +// Több middleware egyszerre +app.post('/login', + validateEmail, + validatePassword, // Másik validator + (req, res) => { + // Login logika... + } +); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Authentikációs middleware - JWT} + \begin{block}{Token validáció - 1. rész} + \small + \begin{verbatim} +const jwt = require('jsonwebtoken'); + +const authenticateJWT = (req, res, next) => { + // Token a Authorization header-ből + const authHeader = req.headers.authorization; + + if (!authHeader) { + return res.status(401).json({ + error: 'Access token required' + }); + } + + // Bearer TOKEN formátum + const token = authHeader.split(' ')[1]; + + if (!token) { + return res.status(401).json({ + error: 'Token not found' + }); + } + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Authentikációs middleware - JWT (folyt.)} + \begin{block}{Token validáció - 2. rész} + \small + \begin{verbatim} + // Token verify + try { + const decoded = jwt.verify(token, process.env.JWT_SECRET); + + // Felhasználói adat hozzáadása a request objektumhoz + req.user = decoded; // { userId, email, role, ... } + + next(); // Sikeres authentikáció + + } catch (error) { + return res.status(403).json({ + error: 'Invalid or expired token' + }); + } +}; + +// Használat +app.get('/api/profile', authenticateJWT, (req, res) => { + // req.user elérhető itt + res.json({ user: req.user }); +}); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Autorizációs middleware - Role-based} + \begin{block}{Szerepkör ellenőrzés} + \small + \begin{verbatim} +// Role-based access control middleware factory +const requireRole = (role) => { + return (req, res, next) => { + // Feltételezzük, hogy az authenticateJWT már futott + if (!req.user) { + return res.status(401).json({ + error: 'Not authenticated' + }); + } + + if (req.user.role !== role) { + return res.status(403).json({ + error: `Forbidden: ${role} role required` + }); + } + + next(); // Jogosultság OK + }; +}; + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Autorizációs middleware (folyt.)} + \begin{block}{Használat szerepkör ellenőrzésre} + \small + \begin{verbatim} +// Admin-only endpoint +app.delete('/api/users/:id', + authenticateJWT, // 1. Authentikáció + requireRole('admin'), // 2. Autorizáció + (req, res) => { + // Csak admin férhet ide + const userId = req.params.id; + // Delete user logika... + res.json({ message: 'User deleted' }); + } +); + +// Több szerepkör támogatása +const requireAnyRole = (...roles) => { + return (req, res, next) => { + if (!req.user || !roles.includes(req.user.role)) { + return res.status(403).json({ error: 'Forbidden' }); + } + next(); + }; +}; + +app.get('/api/reports', authenticateJWT, requireAnyRole('admin', 'manager'), ...); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Rate limiting middleware} + \begin{block}{API hívások korlátozása} + \small + \begin{verbatim} +const rateLimit = require('express-rate-limit'); + +// Rate limiter konfiguráció +const limiter = rateLimit({ + windowMs: 15 * 60 * 1000, // 15 perc + max: 100, // Max 100 kérés 15 percenként + message: 'Too many requests, please try again later', + standardHeaders: true, // RateLimit-* headers + legacyHeaders: false +}); + +// Application-level +app.use('/api/', limiter); + +// Strict limiter login-hoz +const loginLimiter = rateLimit({ + windowMs: 15 * 60 * 1000, + max: 5, // Max 5 login kísérlet 15 percenként + skipSuccessfulRequests: true // Sikeres login nem számít bele +}); + +app.post('/api/login', loginLimiter, (req, res) => { ... }); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Error handling middleware} + \begin{block}{Központi hibakezelés} + \small + \begin{verbatim} +// Error handling middleware (4 paraméter!) +const errorHandler = (err, req, res, next) => { + // Logolás + console.error('Error:', err); + + // Custom error osztályok kezelése + if (err.statusCode) { + return res.status(err.statusCode).json({ + error: err.name, + message: err.message + }); + } + + // Váratlan hibák + res.status(500).json({ + error: 'InternalServerError', + message: 'Something went wrong' + }); +}; + +// Error handler middleware UTOLJÁRA kell regisztrálni! +app.use(errorHandler); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Error handling használata} + \begin{block}{Hibák továbbítása a next()-el} + \small + \begin{verbatim} +// Async route handler +app.get('/api/users/:id', async (req, res, next) => { + try { + const user = await User.findById(req.params.id); + + if (!user) { + const error = new Error('User not found'); + error.statusCode = 404; + throw error; // vagy: return next(error); + } + + res.json({ user }); + + } catch (error) { + next(error); // Error handler middleware-nek továbbítja + } +}); + +// A errorHandler middleware automatikusan feldolgozza + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{CORS middleware} + \begin{block}{Cross-Origin Resource Sharing} + \small + \begin{verbatim} +const cors = require('cors'); + +// Egyszerű CORS - minden origin engedélyezve +app.use(cors()); + +// Konfigurált CORS +const corsOptions = { + origin: 'https://frontend.example.com', // Engedélyezett origin + methods: ['GET', 'POST', 'PUT', 'DELETE'], + allowedHeaders: ['Content-Type', 'Authorization'], + credentials: true, // Cookie-k engedélyezése + maxAge: 86400 // Preflight cache 24 óra +}; + +app.use(cors(corsOptions)); + +// Route-specific CORS +app.get('/api/public', cors(), (req, res) => { + res.json({ message: 'Public data' }); +}); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Security middleware - Helmet} + \begin{block}{HTTP header biztonság} + \small + \begin{verbatim} +const helmet = require('helmet'); + +// Helmet middleware - biztonságos HTTP headerek +app.use(helmet()); + +// Helmet beállítja: +// - Content-Security-Policy +// - X-DNS-Prefetch-Control +// - X-Frame-Options (SAMEORIGIN) +// - X-Content-Type-Options (nosniff) +// - X-XSS-Protection +// stb. + +// Egyedi konfiguráció +app.use(helmet({ + contentSecurityPolicy: { + directives: { + defaultSrc: ["'self'"], + styleSrc: ["'self'", "'unsafe-inline'"] + } + } +})); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Middleware láncolás} + \begin{block}{Több middleware egyidejű használata} + \small + \begin{verbatim} +// Middleware láncolás egy route-on +app.post('/api/posts', + authenticateJWT, // 1. Authentikáció + requireRole('user'), // 2. Autorizáció + validatePost, // 3. Validáció + uploadImages, // 4. Képfeltöltés + (req, res) => { // 5. Route handler + // Post létrehozás logika + res.json({ message: 'Post created' }); + } +); + +// Middleware tömb +const postMiddlewares = [ + authenticateJWT, + requireRole('user'), + validatePost +]; + +app.post('/api/posts', postMiddlewares, (req, res) => { + // ... +}); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}{Middleware Best Practices} + \begin{enumerate} + \item \textbf{Sorrend számít:} + \begin{itemize} + \item CORS és security middleware-ek ELŐRE + \item Error handler middleware HÁTRA + \end{itemize} + + \vspace{0.2cm} + + \item \textbf{Mindig hívd meg a next()-et:} + \begin{itemize} + \item Kivéve ha response-t küldesz vagy hibát dobsz + \end{itemize} + + \vspace{0.2cm} + + \item \textbf{Error handling:} + \begin{itemize} + \item Async függvényekben try-catch + next(error) + \item 4 paraméteres error handler middleware + \end{itemize} + + \vspace{0.2cm} + + \item \textbf{Teljesítmény:} + \begin{itemize} + \item Ne futtass middleware-t szükségtelenül (route-specific) + \item Async műveletek csak ha szükséges + \end{itemize} + + \vspace{0.2cm} + + \item \textbf{Újrafelhasználhatóság:} + \begin{itemize} + \item Middleware factory pattern (pl. requireRole) + \item Konfigurálható middleware-ek + \end{itemize} + \end{enumerate} +\end{frame} + +\begin{frame}{Middleware execution order} + \begin{block}{Tipikus middleware sorrend Express alkalmazásban} + \small + \begin{enumerate} + \item \textbf{helmet()} - Security headers + \item \textbf{cors()} - CORS beállítások + \item \textbf{morgan/logger} - Request logging + \item \textbf{express.json()} - Body parser + \item \textbf{express.urlencoded()} - URL-encoded body + \item \textbf{cookie-parser()} - Cookie parsing + \item \textbf{Rate limiter} - API rate limiting + \item \textbf{Custom middlewares} - Saját middleware-ek + \item \textbf{Routes} - Route handler-ek + \item \textbf{404 handler} - Not found middleware + \item \textbf{Error handler} - Központi hibakezelés (4 param) + \end{enumerate} + \end{block} +\end{frame} + +\begin{frame}{Összefoglalás - Middleware} + \begin{itemize} + \item \textbf{Middleware} = Függvény a kérés-válasz között + \item \textbf{Paraméterek:} (req, res, next) vagy (err, req, res, next) + \item \textbf{Típusok:} Application, Router, Error-handling, Built-in, Third-party + \item \textbf{next():} Következő middleware-re adja a vezérlést + \item \textbf{Használat:} + \begin{itemize} + \item Logging (morgan, winston) + \item Authentication (JWT validáció) + \item Authorization (szerepkör ellenőrzés) + \item Validation (input ellenőrzés) + \item Rate limiting (express-rate-limit) + \item Security (helmet, cors) + \item Error handling (központi hibakezelés) + \end{itemize} + \item \textbf{Sorrend fontos:} Security → Parsing → Auth → Routes → Error + \end{itemize} +\end{frame} diff --git a/Backend_ppt/authn_z/oauth2.tex b/Backend_ppt/authn_z/oauth2.tex new file mode 100644 index 0000000..9803f96 --- /dev/null +++ b/Backend_ppt/authn_z/oauth2.tex @@ -0,0 +1,154 @@ +\section{OAuth 2.0} + +\begin{frame}[shrink=15]{Mi az OAuth 2.0?} + \begin{block}{Definíció} + Autorizációs protokoll - korlátozott hozzáférés jelszó megosztása nélkül. + \end{block} + \begin{itemize} + \item RFC 6749 (2012) + \item Google, Facebook, GitHub használja + \item Példa: App hozzáfér Google Drive-hoz jelszó nélkül + \end{itemize} +\end{frame} + +\begin{frame}[shrink=15]{OAuth 2.0 szerepkörök} + \begin{enumerate} + \item \textbf{Resource Owner}: Felhasználó (birtokolja erőforrást) + \item \textbf{Client}: Alkalmazás (hozzáférést kér) + \item \textbf{Authorization Server}: Token kiállító + \item \textbf{Resource Server}: Védett erőforrás tároló + \end{enumerate} +\end{frame} + +\begin{frame}[shrink=15]{OAuth 2.0 Flow} + \begin{center} + \begin{tikzpicture}[node distance=1.8cm, auto] + \node (ro) [rectangle, draw, text width=1.8cm, text centered] {Resource Owner}; + \node (client) [rectangle, draw, below of=ro, text width=1.8cm, text centered] {Client}; + \node (auth) [rectangle, draw, right of=client, xshift=2.5cm, text width=2cm, text centered] {Auth Server}; + \node (res) [rectangle, draw, below of=auth, text width=2cm, text centered] {Resource Server}; + + \draw[->, thick] (client) -- node[left] {1. Kérés} (ro); + \draw[->, thick] (ro) -- node[above] {2. OK} (auth); + \draw[->, thick] (auth) -- node[right] {3. Token} (client); + \draw[->, thick] (client) -- node[above] {4. API} (res); + \draw[->, thick] (res) -- node[below] {5. Data} (client); + \end{tikzpicture} + \end{center} +\end{frame} + +\begin{frame}[shrink=15]{Grant Types} + \begin{enumerate} + \item \textbf{Authorization Code}: Szerver app, legbiztonságosabb + \item \textbf{Implicit}: \textcolor{red}{Elavult!} + \item \textbf{Resource Owner Password}: Közvetlen jelszó, megbízható app + \item \textbf{Client Credentials}: Machine-to-machine + \item \textbf{PKCE}: Modern mobil/SPA + \end{enumerate} +\end{frame} + +\begin{frame}[shrink=20]{Authorization Code Flow lépések} + \begin{enumerate} + \item Kliens átirányít: \texttt{/authorize?client\_id=\&redirect\_uri=\&scope=} + \item Felhasználó bejelentkezik és hozzájárul + \item Auth Server visszairányít: \texttt{redirect\_uri?code=AUTH\_CODE} + \item Kliens kicseréli code-ot: POST \texttt{/token} + \item Auth Server ad access token-t (+ refresh) + \item Kliens használja tokent: \texttt{Authorization: Bearer } + \end{enumerate} +\end{frame} + +\begin{frame}[fragile,shrink=20]{Authorization Code - Auth kérés} + \begin{verbatim} +GET /oauth/authorize? + response_type=code& + client_id=YOUR_CLIENT_ID& + redirect_uri=https://app.com/callback& + scope=read write& + state=xyz123 + \end{verbatim} + \begin{verbatim} +// Callback +GET https://app.com/callback? + code=AUTH_CODE& + state=xyz123 + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{Authorization Code - Token csere} + \begin{verbatim} +POST /oauth/token +Content-Type: application/x-www-form-urlencoded + +grant_type=authorization_code& +code=AUTH_CODE& +redirect_uri=https://app.com/callback& +client_id=YOUR_ID& +client_secret=YOUR_SECRET + \end{verbatim} + \begin{verbatim} +// Válasz +{ + "access_token": "eyJ...", + "expires_in": 3600, + "refresh_token": "tGzv..." +} + \end{verbatim} +\end{frame} + +\begin{frame}[shrink=15]{PKCE (Proof Key for Code Exchange)} + \begin{block}{Miért?} + Authorization Code Flow biztonságosabbá tétele mobil/SPA app-okhoz. + \end{block} + \begin{enumerate} + \item Kliens generál \texttt{code\_verifier} (random string) + \item Hash: \texttt{code\_challenge = SHA256(code\_verifier)} + \item Auth kéréshez csatol: \texttt{code\_challenge} + \item Token kérésnél küldi: \texttt{code\_verifier} + \item Server validálja: \texttt{SHA256(verifier) == challenge} + \end{enumerate} + \begin{alertblock}{Védelem} + Megakadályozza authorization code ellopását. + \end{alertblock} +\end{frame} + +\begin{frame}[shrink=15]{Scope és Permission} + \begin{block}{Scope} + Jogosultság amit app kér. Példa: \texttt{read:user write:repo} + \end{block} + \begin{itemize} + \item Felhasználó látja mit kér az app + \item Csak kért scope-okat kapja meg + \item Token tartalmazza scope-okat + \end{itemize} + \begin{exampleblock}{GitHub példa} + \texttt{repo, user, gist, notifications} + \end{exampleblock} +\end{frame} + +\begin{frame}[fragile,shrink=20]{Access Token használata} + \begin{verbatim} +// API kérés Bearer token-nel +GET /api/user/profile +Authorization: Bearer eyJhbGciOiJIUzI1NiIs... + \end{verbatim} + \begin{verbatim} +// Express validálás +app.get('/api/user', (req, res) => { + const token = req.headers.authorization?.split(' ')[1]; + // Token validálás... + res.json({ user: userData }); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[shrink=15]{OAuth 2.0 Security} + \begin{enumerate} + \item \textbf{HTTPS kötelező}: Minden kommunikáció + \item \textbf{State parameter}: CSRF védelem + \item \textbf{Redirect URI validation}: Előre regisztrált URI + \item \textbf{Short token lifetime}: Access token max 1 óra + \item \textbf{PKCE használata}: Mobil/SPA app-okhoz + \item \textbf{Scope limitation}: Csak szükséges jogok + \end{enumerate} +\end{frame} diff --git a/Backend_ppt/authn_z/oauth2_old.tex b/Backend_ppt/authn_z/oauth2_old.tex new file mode 100644 index 0000000..ddc9af2 --- /dev/null +++ b/Backend_ppt/authn_z/oauth2_old.tex @@ -0,0 +1,443 @@ +\section{OAuth 2.0} + +\begin{frame}{Mi az OAuth 2.0?} + \begin{block}{Definíció} + OAuth 2.0 egy nyílt szabványú \textbf{autorizációs protokoll}, amely korlátozott hozzáférést ad jelszó megosztása nélkül. + \end{block} + + \begin{itemize} + \item RFC 6749 (2012) + \item Autorizációra fókuszál + \item Biztonságos delegált hozzáférés + \item Google, Facebook, GitHub + \end{itemize} + + \begin{exampleblock}{Használat} + Alkalmazás hozzáfér Google Drive-hoz anélkül, hogy ismebné a jelszót. + \end{exampleblock} +\end{frame} + +\begin{frame}{OAuth 2.0 szerepkörök} + \begin{enumerate} + \item \textbf{Resource Owner (Erőforrás tulajdonos)} + \begin{itemize} + \item A felhasználó, aki birtokolja az erőforrást + \item Engedélyezheti a hozzáférést + \end{itemize} + + \vspace{0.3cm} + + \item \textbf{Client (Kliens)} + \begin{itemize} + \item Az alkalmazás, amely hozzáférést kér az erőforráshoz + \item Például: mobil app, webalkalmazás + \end{itemize} + + \vspace{0.3cm} + + \item \textbf{Authorization Server (Autorizációs szerver)} + \begin{itemize} + \item Kiállítja az access token-t sikeres authentikáció után + \item Kezeli a felhasználói hozzájárulást + \end{itemize} + + \vspace{0.3cm} + + \item \textbf{Resource Server (Erőforrás szerver)} + \begin{itemize} + \item Tárolja a védett erőforrásokat + \item Elfogadja és validálja az access token-eket + \end{itemize} + \end{enumerate} +\end{frame} + +\begin{frame}{OAuth 2.0 Flow - Áttekintés} + \begin{center} + \begin{tikzpicture}[node distance=2cm, auto] + \node (ro) [rectangle, draw, text width=2cm, text centered] {Resource Owner}; + \node (client) [rectangle, draw, below of=ro, text width=2cm, text centered] {Client}; + \node (authserver) [rectangle, draw, right of=client, xshift=3cm, text width=2.5cm, text centered] {Authorization Server}; + \node (resserver) [rectangle, draw, below of=authserver, text width=2.5cm, text centered] {Resource Server}; + + \draw[->, thick] (client) -- node[left] {1. Kérés} (ro); + \draw[->, thick] (ro) -- node[above] {2. Hozzájárulás} (authserver); + \draw[->, thick] (authserver) -- node[right] {3. Token} (client); + \draw[->, thick] (client) -- node[above] {4. API kérés} (resserver); + \draw[->, thick] (resserver) -- node[below] {5. Védett erőforrás} (client); + \end{tikzpicture} + \end{center} + + \begin{itemize} + \item Az Authorization Server és Resource Server lehet ugyanaz a rendszer + \item A kommunikáció HTTPS-en keresztül történik + \end{itemize} +\end{frame} + +\begin{frame}[shrink=10]{OAuth 2.0 Grant Types} + \begin{block}{Grant Type} + Módszer, ahogyan kliens access token-t szerez. + \end{block} + + \begin{enumerate} + \item \textbf{Authorization Code} + \begin{itemize} + \item Legbiztonságosabb, szerveroldali app-hoz + \end{itemize} + + \item \textbf{Implicit} + \begin{itemize} + \item \textcolor{red}{Elavult!} + \end{itemize} + + \item \textbf{Resource Owner Password} + \begin{itemize} + \item Közvetlen jelszó, megbízható app-okhoz + \end{itemize} + + \item \textbf{Client Credentials} + \begin{itemize} + \item Machine-to-machine + \end{itemize} + + \item \textbf{PKCE} + \begin{itemize} + \item Modern mobil és SPA-hoz + \end{itemize} + \end{enumerate} +\end{frame} + +\begin{frame}[shrink=10]{Authorization Code Flow} + \begin{block}{Leggyakrabban használt flow} + Biztonságos szerveroldali alkalmazásokhoz, ahol a client secret biztonságosan tárolható. + \end{block} + + \begin{enumerate} + \small + \item \textbf{Kliens átirányítja a felhasználót} az Authorization Server-re + \begin{itemize} + \item URL: \texttt{/authorize?client\_id=\&redirect\_uri=\&scope=\&state=} + \end{itemize} + + \item \textbf{Felhasználó bejelentkezik és hozzájárul} + + \item \textbf{Authorization Server visszairányít} authorization code-dal + \begin{itemize} + \item URL: \texttt{redirect\_uri?code=AUTH\_CODE\&state=} + \end{itemize} + + \item \textbf{Kliens kicseréli a code-ot} access token-re + \begin{itemize} + \item POST: \texttt{/token} (client\_id, client\_secret, code, redirect\_uri) + \end{itemize} + + \item \textbf{Authorization Server visszaad} access token-t (és refresh token-t) + + \item \textbf{Kliens használja az access token-t} API kérésekhez + \end{enumerate} +\end{frame} + +\begin{frame}[fragile,shrink=10]{Authorization Code Flow - Példa} + \begin{block}{1. Felhasználó átirányítása az authorization endpoint-ra} + \small + \begin{verbatim} +GET /oauth/authorize? + response_type=code& + client_id=YOUR_CLIENT_ID& + redirect_uri=https://yourapp.com/callback& + scope=read write& + state=xyz123 + \end{verbatim} + \end{block} + + \begin{block}{2. Callback authorization code-dal} + \small + \begin{verbatim} +GET https://yourapp.com/callback? + code=AUTH_CODE_HERE& + state=xyz123 + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile,shrink=10]{Authorization Code Flow - Példa (folyt.)} + \begin{block}{3. Token kérés} + \small + \begin{verbatim} +POST /oauth/token +Content-Type: application/x-www-form-urlencoded + +grant_type=authorization_code& +code=AUTH_CODE_HERE& +redirect_uri=https://yourapp.com/callback& +client_id=YOUR_CLIENT_ID& +client_secret=YOUR_CLIENT_SECRET + \end{verbatim} + \end{block} + + \begin{block}{4. Token válasz} + \small + \begin{verbatim} +{ + "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...", + "token_type": "Bearer", + "expires_in": 3600, + "refresh_token": "tGzv3JOkF0XG5Qx2TlKWIA", + "scope": "read write" +} + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}{PKCE (Proof Key for Code Exchange)} + \begin{block}{Miért szükséges?} + A natív és SPA (Single Page Application) alkalmazások nem tudják biztonságosan tárolni a client secret-et. A PKCE authorization code interception elleni védelmet nyújt. + \end{block} + + \vspace{0.5cm} + + \begin{enumerate} + \item Kliens generál egy random \textbf{code\_verifier} értéket + \item Létrehoz egy \textbf{code\_challenge}-t a verifier-ből + \begin{itemize} + \item \texttt{code\_challenge = BASE64URL(SHA256(code\_verifier))} + \end{itemize} + \item Authorization kéréshez csatolja a \texttt{code\_challenge}-t + \item Token kéréshez csatolja a \texttt{code\_verifier}-t + \item Szerver ellenőrzi, hogy a verifier megfelel-e a challenge-nek + \end{enumerate} + + \vspace{0.5cm} + + \begin{alertblock}{Fontos!} + A PKCE ma már \textbf{minden} OAuth 2.0 flow-hoz ajánlott! + \end{alertblock} +\end{frame} + +\begin{frame}{Client Credentials Grant} + \begin{block}{Machine-to-Machine hitelesítés} + Amikor nincs felhasználói interakció, csak két rendszer kommunikál egymással. + \end{block} + + \vspace{0.5cm} + + \begin{itemize} + \item \textbf{Használati esetek:} + \begin{itemize} + \item Backend szolgáltatások közötti kommunikáció + \item Cron job-ok, scheduled task-ok + \item CLI eszközök + \end{itemize} + + \vspace{0.3cm} + + \item \textbf{Folyamat:} + \begin{enumerate} + \item Kliens küld egy POST kérést a token endpoint-ra + \item Csatolja a client\_id-t és client\_secret-et + \item Szerver visszaadja az access token-t + \item Kliens használja a token-t API kérésekhez + \end{enumerate} + \end{itemize} + + \vspace{0.3cm} + + \begin{alertblock}{Figyelem!} + Nincs refresh token, mert nincs felhasználói kontextus! + \end{alertblock} +\end{frame} + +\begin{frame}[fragile]{Client Credentials Grant - Példa} + \begin{block}{Token kérés} + \small + \begin{verbatim} +POST /oauth/token +Content-Type: application/x-www-form-urlencoded +Authorization: Basic BASE64(client_id:client_secret) + +grant_type=client_credentials& +scope=api.read + \end{verbatim} + \end{block} + + \vspace{0.3cm} + + \begin{block}{Token válasz} + \small + \begin{verbatim} +{ + "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...", + "token_type": "Bearer", + "expires_in": 3600, + "scope": "api.read" +} + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Access Token és Refresh Token} + \begin{columns} + \begin{column}{0.48\textwidth} + \begin{block}{Access Token} + \begin{itemize} + \item Rövid élettartam (pl. 1 óra) + \item API kérésekhez használt + \item Bearer token formátum + \item Gyakran JWT + \end{itemize} + \end{block} + + \vspace{0.3cm} + + \textbf{Használat:} + \small + \begin{verbatim} +Authorization: Bearer + ACCESS_TOKEN + \end{verbatim} + \end{column} + + \begin{column}{0.48\textwidth} + \begin{block}{Refresh Token} + \begin{itemize} + \item Hosszú élettartam (napok/hetek) + \item Új access token kéréséhez + \item Biztonságosan tárolva + \item Opaque token + \end{itemize} + \end{block} + + \vspace{0.3cm} + + \textbf{Token megújítás:} + \small + \begin{verbatim} +POST /oauth/token +grant_type=refresh_token& +refresh_token=REFRESH_TOKEN + \end{verbatim} + \end{column} + \end{columns} + + \vspace{0.5cm} + + \begin{alertblock}{Best Practice} + Az access token lejárta esetén a refresh token-nel új tokent kérünk, nem kell újra bejelentkeztetni a felhasználót! + \end{alertblock} +\end{frame} + +\begin{frame}{Scopes (Hatókörök)} + \begin{block}{Mi az a scope?} + A \textbf{scope} meghatározza, hogy a kliens milyen erőforrásokhoz és milyen műveletekhez férhet hozzá. + \end{block} + + \vspace{0.5cm} + + \begin{itemize} + \item \textbf{Granulált jogosultságok:} + \begin{itemize} + \item \texttt{read} - olvasási jogosultság + \item \texttt{write} - írási jogosultság + \item \texttt{delete} - törlési jogosultság + \end{itemize} + + \vspace{0.3cm} + + \item \textbf{Erőforrás specifikus:} + \begin{itemize} + \item \texttt{user:email} - email cím olvasása + \item \texttt{repo:write} - repository írása + \item \texttt{profile:read} - profil olvasása + \end{itemize} + + \vspace{0.3cm} + + \item \textbf{Best Practices:} + \begin{itemize} + \item Least privilege principle: csak a szükséges scope-ok + \item Egyértelmű elnevezés + \item Dokumentáció minden scope-hoz + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}{OpenID Connect (OIDC)} + \begin{block}{Authentikációs réteg OAuth 2.0 felett} + Az \textbf{OpenID Connect} kiegészíti az OAuth 2.0-t authentikációs funkcionalitással. + \end{block} + + \vspace{0.5cm} + + \begin{itemize} + \item \textbf{OAuth 2.0} = Autorizáció + \item \textbf{OpenID Connect} = Autorizáció + Authentikáció + + \vspace{0.3cm} + + \item \textbf{ID Token:} + \begin{itemize} + \item JWT formátumú token + \item Tartalmazza a felhasználó azonosító adatait + \item Claims: \texttt{sub}, \texttt{name}, \texttt{email}, \texttt{picture}, stb. + \end{itemize} + + \vspace{0.3cm} + + \item \textbf{UserInfo Endpoint:} + \begin{itemize} + \item További felhasználói információk lekérdezése + \item Access token-nel hívható + \end{itemize} + + \vspace{0.3cm} + + \item \textbf{Használat:} "Sign in with Google", "Login with Facebook" + \end{itemize} +\end{frame} + +\begin{frame}{OAuth 2.0 Biztonsági best practices} + \begin{alertblock}{Kritikus biztonsági szempontok} + \begin{itemize} + \item \textbf{HTTPS kötelező} minden kommunikációhoz! + \item \textbf{State paraméter} használata CSRF védelem miatt + \item \textbf{Client secret} biztonságos tárolása (szerver oldalon) + \item \textbf{Redirect URI validáció} - csak engedélyezett URI-k + \item \textbf{Token lejárati idő} beállítása + \item \textbf{Scope minimalizálása} - least privilege + \end{itemize} + \end{alertblock} + + \vspace{0.3cm} + + \begin{block}{További ajánlások} + \begin{itemize} + \item PKCE használata minden flow-ban + \item Token revocation támogatása + \item Rate limiting az endpoint-okon + \item Token tárolás biztonságos helyen (HttpOnly cookie) + \item Regular security audit + \end{itemize} + \end{block} +\end{frame} + +\begin{frame}{Összefoglalás} + \begin{itemize} + \item \textbf{OAuth 2.0} = Autorizációs protokoll (nem authentikációs!) + \item \textbf{Szerepkörök:} Resource Owner, Client, Authorization Server, Resource Server + \item \textbf{Grant Types:} Authorization Code (PKCE), Client Credentials + \item \textbf{Tokenek:} Access Token (rövid), Refresh Token (hosszú) + \item \textbf{Scopes:} Granulált jogosultság kezelés + \item \textbf{OpenID Connect:} OAuth 2.0 + Authentikáció + \item \textbf{Biztonság:} HTTPS, state, PKCE, token biztonság + \end{itemize} + + \vspace{0.5cm} + + \begin{exampleblock}{Amikor OAuth 2.0-t használunk} + \begin{itemize} + \item Social login implementációhoz + \item Third-party API hozzáféréshez + \item Microservice authentikációhoz + \item Mobile és SPA alkalmazásokhoz + \end{itemize} + \end{exampleblock} +\end{frame} diff --git a/Backend_ppt/authn_z/services.tex b/Backend_ppt/authn_z/services.tex new file mode 100644 index 0000000..0dcd6ac --- /dev/null +++ b/Backend_ppt/authn_z/services.tex @@ -0,0 +1,233 @@ +\section{Service Layer} + +\begin{frame}[shrink=15]{Mi az a Service Layer?} + \begin{block}{Definíció} + Tervezési minta - üzleti logika elválasztása controller-ektől és data layer-től. + \end{block} + \begin{itemize} + \item Separation of Concerns + \item Reusability (újrafelhasználható logika) + \item Testability (könnyebb tesztelés) + \item Maintainability + \end{itemize} + \begin{exampleblock}{Architektúra} + Controller → Service → Repository → Database + \end{exampleblock} +\end{frame} + +\begin{frame}[shrink=15]{Háromrétegű architektúra} + \begin{columns} + \begin{column}{0.32\textwidth} + \begin{block}{Presentation} + \begin{small} + Controllers, Routes\\ + HTTP req/res\\ + Validáció + \end{small} + \end{block} + \end{column} + \begin{column}{0.32\textwidth} + \begin{block}{Business Logic} + \begin{small} + \textbf{Services}\\ + Üzleti szabályok\\ + Orchestration + \end{small} + \end{block} + \end{column} + \begin{column}{0.32\textwidth} + \begin{block}{Data Access} + \begin{small} + Repository\\ + ORM\\ + Database + \end{small} + \end{block} + \end{column} + \end{columns} + \begin{alertblock}{Fontos} + Controller \textbf{NEM} tartalmaz üzleti logikát, csak delegál! + \end{alertblock} +\end{frame} + +\begin{frame}[shrink=15]{Service Layer előnyei} + \begin{enumerate} + \item \textbf{Separation}: Tiszta felelősségi körök + \item \textbf{Reusability}: Több controller használhatja + \item \textbf{Testability}: Könnyen unit tesztelhető + \item \textbf{Maintainability}: Változások izoláltak + \end{enumerate} +\end{frame} + +\begin{frame}[fragile,shrink=20]{AuthService - Interface} + \begin{verbatim} +class AuthService { + async register(userData) { ... } + async login(email, password) { ... } + async logout(userId) { ... } + async refreshToken(refreshToken) { ... } + async verifyToken(token) { ... } + async resetPassword(email) { ... } +} + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{AuthService - Register} + \begin{verbatim} +class AuthService { + async register(userData) { + const exists = await this.userRepo.findByEmail(userData.email); + if (exists) throw new Error('User exists'); + + const hashed = await bcrypt.hash(userData.password, 10); + const user = await this.userRepo.create({ + ...userData, + password: hashed + }); + + return { id: user.id, email: user.email }; + } +} + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{AuthService - Login} + \begin{verbatim} +async login(email, password) { + const user = await this.userRepo.findByEmail(email); + if (!user) throw new Error('Invalid credentials'); + + const valid = await bcrypt.compare(password, user.password); + if (!valid) throw new Error('Invalid credentials'); + + const token = jwt.sign( + { userId: user.id, role: user.role }, + process.env.JWT_SECRET, + { expiresIn: '1h' } + ); + + return { token, user: { id: user.id, email: user.email } }; +} + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{Controller használja Service-t} + \begin{verbatim} +class AuthController { + constructor(authService) { + this.authService = authService; + } + + async register(req, res) { + try { + const user = await this.authService.register(req.body); + res.status(201).json(user); + } catch (err) { + res.status(400).json({ error: err.message }); + } + } + + async login(req, res) { + try { + const result = await this.authService.login(req.body.email, req.body.password); + res.json(result); + } catch (err) { + res.status(401).json({ error: err.message }); + } + } +} + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{UserService példa} + \begin{verbatim} +class UserService { + constructor(userRepo) { + this.userRepo = userRepo; + } + + async getById(id) { + const user = await this.userRepo.findById(id); + if (!user) throw new Error('User not found'); + return user; + } + + async update(id, data) { + const user = await this.getById(id); + return await this.userRepo.update(id, data); + } + + async delete(id) { + await this.getById(id); + return await this.userRepo.delete(id); + } +} + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=20]{Dependency Injection} + \begin{verbatim} +// Repository +class UserRepository { + async findById(id) { /* DB query */ } + async create(data) { /* DB insert */ } +} + +// Service +class UserService { + constructor(userRepository) { + this.userRepo = userRepository; + } + // ... +} + +// DI container +const userRepo = new UserRepository(); +const userService = new UserService(userRepo); +const userController = new UserController(userService); + \end{verbatim} +\end{frame} + +\begin{frame}[shrink=15]{Service Layer Best Practices} + \begin{enumerate} + \item Service-ek ne dependáljanak controller-ektől + \item Egy service = egy domain (User, Auth, Order) + \item Dependency Injection használata + \item Service-ek ne ismerjék HTTP-t (req, res) + \item Hibakezelés service-ben (throw Error) + \item Transaction logika service-ben + \item Async/await következetes használata + \end{enumerate} +\end{frame} + +\begin{frame}[fragile,shrink=20]{Transaction példa Service-ben} + \begin{verbatim} +class OrderService { + async createOrder(userId, items) { + const transaction = await db.transaction(); + + try { + const order = await this.orderRepo.create({ userId }, transaction); + + for (const item of items) { + await this.orderItemRepo.create({ orderId: order.id, ...item }, transaction); + } + + await transaction.commit(); + return order; + } catch (err) { + await transaction.rollback(); + throw err; + } + } +} + \end{verbatim} +\end{frame} + +\begin{frame}[shrink=15]{Testing Service Layer} + \begin{itemize} + \item Service-ek unit tesztelése mock repository-val + \item Ne kelljen DB a unit teszthez + \item Integration teszt valódi DB-vel + \end{itemize} +\end{frame} diff --git a/Backend_ppt/authn_z/services_old.tex b/Backend_ppt/authn_z/services_old.tex new file mode 100644 index 0000000..6550e6b --- /dev/null +++ b/Backend_ppt/authn_z/services_old.tex @@ -0,0 +1,671 @@ +\section{Service Layer} + +\begin{frame}[shrink=5]{Mi az a Service Layer?} + \begin{block}{Definíció} + A \textbf{Service Layer} (szolgáltatási réteg) egy tervezési minta, amely elválasztja az üzleti logikát a controller-ektől és a data access layer-től. + \end{block} + + \begin{itemize} + \item \textbf{Separation of Concerns:} Felelősségek szétválasztása + \item \textbf{Reusability:} Újrafelhasználható üzleti logika + \item \textbf{Testability:} Könnyebb tesztelhetőség + \item \textbf{Maintainability:} Karbantarthatóság + \end{itemize} + + \begin{exampleblock}{MVC architektúrában} + Controller → \textbf{Service Layer} → Repository/Model → Database + \end{exampleblock} +\end{frame} + +\begin{frame}[shrink=5]{Háromrétegű architektúra} + \begin{columns} + \begin{column}{0.3\textwidth} + \begin{block}{Presentation Layer} + \begin{itemize} + \item Controllers + \item Routes + \item HTTP kérés/válasz + \item Validáció + \end{itemize} + \end{block} + \end{column} + + \begin{column}{0.35\textwidth} + \begin{block}{Business Logic Layer} + \begin{itemize} + \item \textbf{Services} + \item Üzleti szabályok + \item Adatmanipuláció + \item Orchestration + \end{itemize} + \end{block} + \end{column} + + \begin{column}{0.3\textwidth} + \begin{block}{Data Access Layer} + \begin{itemize} + \item Repository + \item Models + \item ORM + \item Database + \end{itemize} + \end{block} + \end{column} + \end{columns} + + \begin{alertblock}{Fontos!} + A controller \textbf{NEM} tartalmaz üzleti logikát, csak delegál a service-eknek! + \end{alertblock} +\end{frame} + +\begin{frame}[shrink=10]{Service Layer előnyei} + \begin{enumerate} + \item \textbf{Separation of Concerns} + \begin{itemize} + \item Tiszta felelősségi körök + \item Controller: HTTP kezelés + \item Service: Üzleti logika + \item Repository: Adatelérés + \end{itemize} + + \item \textbf{Reusability} + \begin{itemize} + \item Több controller használhatja ugyanazt a service-t + \item Különböző kontextusokban (API, CLI, Background job) + \end{itemize} + + \item \textbf{Testability} + \begin{itemize} + \item Service-ek könnyebben unit tesztelhetők + \item Mock-olható függőségek + \end{itemize} + + \item \textbf{Maintainability} + \begin{itemize} + \item Változások izoláltak + \item Könnyebb hibakeresés + \end{itemize} + \end{enumerate} +\end{frame} + +\begin{frame}[fragile,shrink=5]{AuthService - Authentikációs szolgáltatás} + \begin{block}{AuthService felelősségei} + \begin{itemize} + \item Felhasználó regisztráció + \item Bejelentkezés (login) + \item Token generálás és validálás + \item Jelszó hash-elés + \item Kijelentkezés (logout) + \end{itemize} + \end{block} + + \begin{exampleblock}{AuthService példa} + \small + \begin{verbatim} +class AuthService { + async register(userData) { ... } + async login(email, password) { ... } + async logout(userId) { ... } + async refreshToken(refreshToken) { ... } + async verifyToken(token) { ... } + async resetPassword(email) { ... } +} + \end{verbatim} + \end{exampleblock} +\end{frame} + +\begin{frame}[fragile,shrink=10]{AuthService implementáció - Register} + \begin{block}{Regisztráció üzleti logikája} + \small + \begin{verbatim} +class AuthService { + async register(userData) { + const existing = await this.userRepository + .findByEmail(userData.email); + if (existing) throw new Error('User exists'); + + const hashed = await bcrypt.hash(userData.password, 10); + const user = await this.userRepository.create({ + ...userData, + password: hashed + }); + + return { id: user.id, email: user.email }; + } +} + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{AuthService implementáció - Login} + \begin{block}{Bejelentkezés üzleti logikája} + \small + \begin{verbatim} +async login(email, password) { + const user = await this.userRepository.findByEmail(email); + if (!user) throw new Error('Invalid credentials'); + + const valid = await bcrypt.compare(password, user.password); + if (!valid) throw new Error('Invalid credentials'); + + const accessToken = jwt.sign( + { userId: user.id, email: user.email }, + process.env.JWT_SECRET, { expiresIn: '15m' } + ); + + const refreshToken = jwt.sign( + { userId: user.id }, + process.env.REFRESH_SECRET, { expiresIn: '7d' } + ); + + return { accessToken, refreshToken }; +} + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Controller használja az AuthService-t} + \begin{block}{Thin Controller - Fat Service} + \small + \begin{verbatim} +app.post('/api/auth/register', async (req, res) => { + try { + const user = await authService.register(req.body); + res.status(201).json({ user }); + } catch (error) { + res.status(400).json({ error: error.message }); + } +}); + +app.post('/api/auth/login', async (req, res) => { + try { + const result = await authService.login( + req.body.email, req.body.password + ); + res.cookie('refreshToken', result.refreshToken, + { httpOnly: true, secure: true }); + res.json({ accessToken: result.accessToken }); + } catch (error) { + res.status(401).json({ error: error.message }); + } +}); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{UserService - Felhasználó kezelés} + \begin{block}{UserService felelősségei} + \begin{itemize} + \item Felhasználói profil lekérdezés + \item Profil módosítás + \item Jelszó változtatás + \item Felhasználó törlés + \item Felhasználó lista (admin) + \end{itemize} + \end{block} + + \vspace{0.3cm} + + \begin{exampleblock}{UserService példa} + \small + \begin{verbatim} +class UserService { + constructor(userRepository) { + this.userRepository = userRepository; + } + + async getUserProfile(userId) { ... } + async updateProfile(userId, data) { ... } + async changePassword(userId, oldPassword, newPassword) { ... } + async deleteUser(userId) { ... } + async getAllUsers(filters) { ... } +} + \end{verbatim} + \end{exampleblock} +\end{frame} + +\begin{frame}[fragile,shrink=5]{UserService implementáció} + \begin{block}{Jelszó változtatás üzleti logikával} + \small + \begin{verbatim} +class UserService { + async changePassword(userId, oldPass, newPass) { + const user = await this.userRepository.findById(userId); + if (!user) throw new Error('User not found'); + + const valid = await bcrypt.compare(oldPass, user.password); + if (!valid) throw new Error('Incorrect password'); + + const hashed = await bcrypt.hash(newPass, 10); + await this.userRepository.update(userId, + { password: hashed }); + await this.tokenService.revokeAllTokens(userId); + + return { success: true }; + } +} + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{TokenService - Token kezelés} + \begin{block}{TokenService felelősségei} + \begin{itemize} + \item Access token generálás + \item Refresh token generálás + \item Token validálás + \item Token megújítás (refresh) + \item Token visszavonás (revoke) + \end{itemize} + \end{block} + + \vspace{0.3cm} + + \begin{exampleblock}{TokenService példa} + \small + \begin{verbatim} +class TokenService { + constructor(tokenRepository) { + this.tokenRepository = tokenRepository; + } + + generateAccessToken(payload) { ... } + generateRefreshToken(userId) { ... } + async verifyAccessToken(token) { ... } + async refreshAccessToken(refreshToken) { ... } + async revokeToken(token) { ... } + async revokeAllTokens(userId) { ... } +} + \end{verbatim} + \end{exampleblock} +\end{frame} + +\begin{frame}[fragile,shrink=5]{TokenService implementáció} + \begin{block}{Token refresh implementáció} + \small + \begin{verbatim} +class TokenService { + async refreshAccessToken(refreshToken) { + const decoded = jwt.verify( + refreshToken, process.env.REFRESH_SECRET); + + const stored = await this.tokenRepository + .findByToken(refreshToken); + if (!stored || stored.revoked) + throw new Error('Token revoked'); + + const user = await this.userRepository + .findById(decoded.userId); + return { + accessToken: this.generateAccessToken(user) + }; + } +} + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{AuthorizationService - Autorizáció} + \begin{block}{AuthorizationService felelősségei} + \begin{itemize} + \item Jogosultság ellenőrzés + \item Role-based access control (RBAC) + \item Permission-based access control (PBAC) + \item Resource ownership ellenőrzés + \end{itemize} + \end{block} + + \vspace{0.3cm} + + \begin{exampleblock}{AuthorizationService példa} + \small + \begin{verbatim} +class AuthorizationService { + async hasRole(userId, role) { ... } + async hasPermission(userId, permission) { ... } + async canAccessResource(userId, resourceId, action) { ... } + async isOwner(userId, resourceId) { ... } +} + \end{verbatim} + \end{exampleblock} +\end{frame} + +\begin{frame}[fragile]{AuthorizationService implementáció} + \begin{block}{Jogosultság ellenőrzés} + \small + \begin{verbatim} +class AuthorizationService { + constructor(userRepository, permissionRepository) { + this.userRepository = userRepository; + this.permissionRepository = permissionRepository; + } + + async canAccessResource(userId, resourceId, action) { + const user = await this.userRepository.findById(userId); + + // 1. Admin mindent csinálhat + if (user.role === 'admin') { + return true; + } + + // 2. Ownership ellenőrzés + const resource = await this.resourceRepository.findById(resourceId); + if (resource.ownerId === userId && action === 'read') { + return true; + } + + // 3. Permission alapú ellenőrzés + const permissions = await this.permissionRepository.getByUserId(userId); + return permissions.some(p => p.action === action && p.resource === resourceId); + } +} + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Dependency Injection} + \begin{block}{Service-ek kapcsolata} + A service-ek más service-eket használnak. Dependency Injection segít a függőségek kezelésében. + \end{block} + + \vspace{0.3cm} + + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{Rossz példa:} + \small + \begin{verbatim} +class AuthService { + constructor() { + this.userRepo = + new UserRepository(); + } +} + \end{verbatim} + \end{column} + + \begin{column}{0.48\textwidth} + \textbf{Jó példa (DI):} + \small + \begin{verbatim} +class AuthService { + constructor(userRepo) { + this.userRepo = userRepo; + } +} + +const authService = + new AuthService(userRepo); + \end{verbatim} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}[fragile]{Service Container / DI Container} + \begin{block}{Automatikus Dependency Injection} + DI container-ek automatikusan kezelik a szolgáltatások létrehozását. + \end{block} + + \vspace{0.3cm} + + \begin{exampleblock}{Awilix library használata} + \small + \begin{verbatim} +const { createContainer, asClass } = require('awilix'); + +const container = createContainer(); +container.register({ + userRepository: asClass(UserRepository).singleton(), + tokenRepository: asClass(TokenRepository).singleton(), + authService: asClass(AuthService).singleton(), + userService: asClass(UserService).singleton(), + tokenService: asClass(TokenService).singleton() +}); + +const authService = container.resolve('authService'); + \end{verbatim} + \end{exampleblock} +\end{frame} + +\begin{frame}[fragile]{Error Handling a Service Layer-ben} + \begin{block}{Custom Error osztályok} + \small + \begin{verbatim} +class AuthenticationError extends Error { + constructor(message) { + super(message); + this.statusCode = 401; + } +} + +class AuthorizationError extends Error { + constructor(message) { + super(message); + this.statusCode = 403; + } +} + +class NotFoundError extends Error { + constructor(resource) { + super(`${resource} not found`); + this.statusCode = 404; + } +} + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Error Handling - Service használat} + \begin{block}{Service dobja a custom error-t} + \small + \begin{verbatim} +class AuthService { + async login(email, password) { + const user = await this.userRepository + .findByEmail(email); + if (!user) { + throw new AuthenticationError('Invalid credentials'); + } + const valid = await bcrypt.compare( + password, user.password + ); + if (!valid) { + throw new AuthenticationError('Invalid credentials'); + } + // ... + } +} + \end{verbatim} + \end{block} + + \vspace{0.2cm} + + \begin{block}{Controller kezeli} + \small + \begin{verbatim} +app.post('/api/auth/login', async (req, res, next) => { + try { + const result = await authService.login( + req.body.email, req.body.password); + res.json(result); + } catch (error) { + next(error); + } +}); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}[fragile]{Global Error Handler Middleware} + \begin{block}{Központi hibaüzenet kezelés} + \small + \begin{verbatim} +app.use((error, req, res, next) => { + console.error(error); + + if (error.statusCode) { + return res.status(error.statusCode) + .json({ error: error.message }); + } + + res.status(500).json({ + error: 'Internal Server Error' + }); +}); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}{Service Layer Testing} + \begin{block}{Unit Testing} + A service-ek izoláltan tesztelhetők mock repository-kkal és service-ekkel. + \end{block} + + \vspace{0.3cm} + + \begin{itemize} + \item \textbf{Előnyök:} + \begin{itemize} + \item Gyors tesztek (nincs adatbázis) + \item Üzleti logika fókusz + \item Mock-olható függőségek + \end{itemize} + + \vspace{0.3cm} + + \item \textbf{Test framework-ök:} + \begin{itemize} + \item Jest + \item Mocha + Chai + \item Vitest + \end{itemize} + + \vspace{0.3cm} + + \item \textbf{Mocking library-k:} + \begin{itemize} + \item Sinon.js + \item Jest built-in mocks + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}[fragile,shrink=5]{Service Unit Test példa} + \begin{block}{AuthService.login() teszt} + \small + \begin{verbatim} +describe('AuthService', () => { + let authService, mockUserRepo; + + beforeEach(() => { + mockUserRepo = { findByEmail: jest.fn() }; + authService = new AuthService(mockUserRepo); + }); + + test('login fails for invalid user', async () => { + mockUserRepo.findByEmail.mockResolvedValue(null); + await expect( + authService.login('test@test.com', 'pass') + ).rejects.toThrow('Invalid credentials'); + }); +}); + \end{verbatim} + \end{block} +\end{frame} + +\begin{frame}{Service Layer Best Practices} + \begin{enumerate} + \item \textbf{Single Responsibility:} Egy service egy felelősségi kör + \item \textbf{Dependency Injection:} Konstruktorban injektált függőségek + \item \textbf{Thin Controllers:} Controller csak HTTP kezel + \item \textbf{Error Handling:} Custom error osztályok használata + \item \textbf{Async/Await:} Tiszta aszinkron kód + \item \textbf{Validation:} Input validáció a service-ben is + \item \textbf{Transaction Management:} Adatbázis tranzakciók + \item \textbf{Logging:} Strukturált log-olás + \end{enumerate} +\end{frame} + +\begin{frame}{Projekt struktúra Service Layer-rel} + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{Fájl struktúra:} + \small + \begin{itemize} + \item \texttt{src/} + \begin{itemize} + \item \texttt{controllers/} + \begin{itemize} + \item \texttt{auth.controller.js} + \item \texttt{user.controller.js} + \end{itemize} + \item \texttt{services/} + \begin{itemize} + \item \texttt{auth.service.js} + \item \texttt{user.service.js} + \item \texttt{token.service.js} + \end{itemize} + \item \texttt{repositories/} + \begin{itemize} + \item \texttt{user.repository.js} + \item \texttt{token.repository.js} + \end{itemize} + \item \texttt{models/} + \item \texttt{middlewares/} + \item \texttt{utils/} + \end{itemize} + \end{itemize} + \end{column} + + \begin{column}{0.48\textwidth} + \textbf{Rétegek felelősségei:} + \begin{itemize} + \item \textbf{Controller:} + \begin{itemize} + \item HTTP kérés/válasz + \item Validáció (input) + \item Service hívás + \end{itemize} + + \vspace{0.3cm} + + \item \textbf{Service:} + \begin{itemize} + \item Üzleti logika + \item Adatmanipuláció + \item Orchestration + \end{itemize} + + \vspace{0.3cm} + + \item \textbf{Repository:} + \begin{itemize} + \item Adatbázis műveletek + \item Query-k + \item ORM interaction + \end{itemize} + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}{Összefoglalás} + \begin{itemize} + \item \textbf{Service Layer} = Üzleti logika réteg + \item \textbf{Separation of Concerns:} Controller, Service, Repository + \item \textbf{AuthService:} Regisztráció, login, token kezelés + \item \textbf{UserService:} Felhasználó kezelés, profil, jelszó + \item \textbf{TokenService:} Token generálás, validálás, refresh + \item \textbf{AuthorizationService:} Jogosultság ellenőrzés + \item \textbf{Dependency Injection:} Konstruktor alapú DI + \item \textbf{Error Handling:} Custom error osztályok + \item \textbf{Testing:} Unit teszt mock-okkal + \item \textbf{Best Practices:} Thin controller, fat service + \end{itemize} + + \vspace{0.3cm} + + \begin{exampleblock}{Miért használjuk?} + Tiszta kód, újrafelhasználhatóság, tesztelhetőség, karbantarthatóság + \end{exampleblock} +\end{frame} diff --git a/Backend_ppt/authn_z/session.tex b/Backend_ppt/authn_z/session.tex new file mode 100644 index 0000000..73dd3b1 --- /dev/null +++ b/Backend_ppt/authn_z/session.tex @@ -0,0 +1,280 @@ +\section{Session} + +\begin{frame}{Mi az a session?} + \begin{block}{Definíció} + Szerver-oldali állapot, amely felhasználói adatokat tárol bejelentkezés után. + \end{block} + + \begin{itemize} + \item \textbf{Stateful} megközelítés + \item Kliens csak \textbf{session ID}-t tárol (cookie) + \item Tartalom a szerveren (memória/DB/Redis) + \end{itemize} + + \begin{alertblock}{Fontos} + Session auth nem token-alapú, szerver kezeli az állapotot. + \end{alertblock} +\end{frame} + +\begin{frame}{Session vs Token} + \begin{columns} + \begin{column}{0.48\textwidth} + \begin{block}{Session} + \begin{itemize} + \item Szerver tárolja + \item Cookie-ban ID + \item Könnyű visszavonás + \item Nehezebb skálázás + \end{itemize} + \end{block} + \end{column} + + \begin{column}{0.48\textwidth} + \begin{block}{Token (JWT)} + \begin{itemize} + \item Stateless + \item Kliens tárolja + \item Nehezebb visszavonás + \item Könnyebb skálázás + \end{itemize} + \end{block} + \end{column} + \end{columns} + + \begin{center} + Session $\leftrightarrow$ JWT: kontroll vs skálázhatóság + \end{center} +\end{frame} + +\begin{frame}{Session folyamat} + \begin{enumerate} + \item Bejelentkezés (username + password) + \item Adatok ellenőrzése + \item \textbf{Session} létrehozás + \item Session ID cookie-ban + \item Kliens csatolja minden kéréshez + \item Szerver ID alapján azonosít + \end{enumerate} + + \begin{alertblock}{Megjegyzés} + HTTPS kötelező, különben session ID elliopható! + \end{alertblock} +\end{frame} + +\begin{frame}{Session tárolás} + \begin{block}{Hol tároljuk?} + Session adatokat szerveren, több lehetőség: + \end{block} + + \begin{itemize} + \item \textbf{In-memory} - gyors, nem skálázható + \item \textbf{Redis} - gyors, skálázható, TTL + \item \textbf{DB} - tartós, lassabb + \item \textbf{Distributed cache} - nagy rendszerekhez + \end{itemize} + + \begin{alertblock}{Best Practice} + Élesben ne használj in-memory store-t! + \end{alertblock} +\end{frame} + +\begin{frame}[fragile,shrink=15]{Redis Session Store - Telepítés} + \begin{block}{Redis előnyei session tároláshoz} + Gyors, skálázható, beépített TTL (Time To Live) támogatás + \end{block} + + \begin{verbatim} +npm install express-session connect-redis redis + +// Redis kliens és session store +const session = require('express-session'); +const RedisStore = require('connect-redis').default; +const { createClient } = require('redis'); + +const redisClient = createClient({ + host: 'localhost', + port: 6379 +}); +redisClient.connect(); + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=15]{Redis Session - Konfiguráció} + \begin{verbatim} +app.use(session({ + store: new RedisStore({ client: redisClient }), + secret: process.env.SESSION_SECRET, + resave: false, + saveUninitialized: false, + cookie: { + httpOnly: true, + secure: true, // HTTPS + maxAge: 1000 * 60 * 60 * 24 // 1 nap + } +})); + +app.post('/login', async (req, res) => { + const user = await authenticateUser(req.body); + req.session.userId = user.id; + req.session.role = user.role; + res.json({ success: true }); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[fragile,shrink=15]{Redis Session - Műveletek} + \begin{verbatim} +// Session olvasása +app.get('/profile', (req, res) => { + if (!req.session.userId) { + return res.status(401).json({ error: 'Not logged in' }); + } + res.json({ userId: req.session.userId }); +}); + +// Session módosítása +app.post('/settings', (req, res) => { + req.session.theme = req.body.theme; + res.json({ success: true }); +}); + +// Session törlése (logout) +app.post('/logout', (req, res) => { + req.session.destroy((err) => { + if (err) return res.status(500).send('Error'); + res.clearCookie('connect.sid'); + res.json({ message: 'Logged out' }); + }); +}); + \end{verbatim} +\end{frame} + +\begin{frame}[shrink=15]{Redis Session előnyei} + \begin{columns} + \begin{column}{0.48\textwidth} + \textbf{Előnyök:} + \begin{itemize} + \item Villámgyors (in-memory) + \item Automatikus TTL támogatás + \item Skálázható (cluster mode) + \item Persistence opcionális + \item Pub/Sub támogatás + \end{itemize} + \end{column} + \begin{column}{0.48\textwidth} + \textbf{Használati esetek:} + \begin{itemize} + \item Session store + \item Rate limiting + \item Real-time analytics + \item Cache layer + \item Message queue + \end{itemize} + \end{column} + \end{columns} +\end{frame} + +\begin{frame}{Session élettartam} + \begin{block}{Session Timeout} + Session-ök lejárnak idő vagy inaktivitás után. + \end{block} + + \begin{itemize} + \item \textbf{Absolute:} fix lejárat (pl. 24h) + \item \textbf{Idle:} aktivitás hiánya + \item \textbf{Sliding:} aktivitás meghosszabbítja + \end{itemize} + + \begin{exampleblock}{Példa} + Online bank: 5 perc inaktivitás $\to$ kiléptetés. + \end{exampleblock} +\end{frame} + +\begin{frame}[fragile,shrink=10]{Express session példa} + \begin{exampleblock}{express-session használata} + \tiny + \begin{verbatim} +const session = require('express-session'); + +app.use(session({ + secret: 'super-secret-key', + resave: false, + saveUninitialized: false, + cookie: { + httpOnly: true, + secure: true, + maxAge: 1000 * 60 * 60 // 1 óra + } +})); + +app.post('/login', (req, res) => { + req.session.userId = user.id; + res.json({ message: 'Logged in' }); +}); + \end{verbatim} + \end{exampleblock} +\end{frame} + +\begin{frame}{Cookie biztonság} + \begin{block}{Mitől biztonságos?} + Session ID cookie biztonságos beállításokkal. + \end{block} + + \begin{itemize} + \item \textbf{HttpOnly}: JS nem fér hozzá + \item \textbf{Secure}: csak HTTPS + \item \textbf{SameSite}: CSRF védelem + \item \textbf{Rotálás}: ID frissítés (fixation ellen) + \end{itemize} + + \begin{alertblock}{Session Fixation} + Támadó előre beállított ID-t "ráerőltet" a felhasználóra. + \end{alertblock} +\end{frame} + +\begin{frame}[shrink=5]{Session alapú autorizáció} + \begin{block}{Jogosultságok session-ben} + A session tárolhatja a felhasználó szerepköreit és jogosultságait. + \end{block} + + \begin{itemize} + \item \textbf{Példa:} \texttt{req.session.role = 'Admin'} + \item Middleware ellenőrzi a role-t + \item Ha nincs jogosultság: \texttt{403 Forbidden} + \end{itemize} + + \vspace{0.4cm} + + \begin{exampleblock}{Minta ellenőrzés} + \texttt{if (req.session.role !== 'Admin') return res.status(403);} + \end{exampleblock} +\end{frame} + +\begin{frame}{Session Best Practices} + \begin{itemize} + \item HTTPS használata mindenhol + \item HttpOnly + Secure + SameSite cookie beállítások + \item Session store: Redis vagy DB + \item Rövid idle timeout érzékeny rendszereknél + \item Session ID rotálás bejelentkezéskor + \item Rate limiting és brute force védelem + \end{itemize} + + \vspace{0.5cm} + +\end{frame} + +\begin{frame}{Összefoglalás - Session} + \begin{itemize} + \item Session = szerver-oldali állapot (cookie csak ID) + \item Kényelmes, de skálázásnál kihívás + \item Cookie biztonsági beállítások kritikusak + \item \textbf{Redis a leggyakoribb session store} - gyors, skálázható + \item Timeout és rotáció védelem session támadások ellen + \item Redis TTL automatikus session lejárathoz + \end{itemize} + + \begin{exampleblock}{Produkciós környezet} + Redis cluster + persistence + backup = megbízható session kezelés + \end{exampleblock} +\end{frame} \ No newline at end of file