\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}
