Какие знаешь протоколы Аутентификации

Ответ

Веб-приложения используют разные протоколы аутентификации, вот основные:

  1. OAuth 2.0 – делегированный доступ к ресурсам (например, вход через Google/Facebook). Работает через токены (access/refresh).
    // Пример запроса access token
    fetch('https://oauth.provider/token', {
      method: 'POST',
      body: 'grant_type=authorization_code&code=...'
    });
  1. JWT (JSON Web Token) – токен в формате JSON с подписью (Header.Payload.Signature). Хранится в localStorage/cookies.
    // Пример декодирования JWT
    const payload = JSON.parse(atob(token.split('.')[1]));
  1. Basic Auth – логин/пароль в заголовке Authorization: Basic base64(login:password). Устарел из-за отсутствия безопасности.

  2. OpenID Connect – надстройка над OAuth 2.0 для аутентификации (ID-токен + userinfo).

  3. SAML – XML-протокол для enterprise (SSO в корпоративных системах).

Для SPA чаще используют OAuth 2.0 + JWT. Важно: токены должны передаваться по HTTPS, а JWT — подписываться (не использовать unsigned).

Ответ 18+ 🔞

А, слушай, вот эти ваши веб-приложения, как они с пользователями-то договариваются, кто есть кто? Ну, аутентификация там всякая. Ёпта, протоколов дохуя, но главные — вот эти ребята.

Первое, OAuth 2.0 — это типа когда ты заходишь куда-нибудь не через свой логин, а через «Войти через Гугл» или там «Через Фейсбук». Он не пароль твой просит, а делегирует доступ, понимаешь? Работает на токенах: один — access token, чтобы сейчас зайти, а второй — refresh token, чтобы новый access получить, когда старый сдохнет. Хитрая жопа, но удобная.

// Пример запроса access token
fetch('https://oauth.provider/token', {
  method: 'POST',
  body: 'grant_type=authorization_code&code=...'
});

Дальше, JWT (JSON Web Token) — это вообще песня. Токен, который сам в себе информацию несёт, как консервная банка. Состоит из трёх частей: заголовок, полезная нагрузка (payload) и подпись. Его можно в localStorage или куки засунуть. Главное — чтобы был подписан, а то некоторые мудяки unsigned используют, это пиздец как небезопасно.

// Пример декодирования JWT
const payload = JSON.parse(atob(token.split('.')[1]));

А вот Basic Auth — это вообще старый дед, который уже на ладан дышит. Логин и пароль кодируются в base64 и суются в заголовок. Выглядит просто, но передавать это без HTTPS — всё равно что кричать пароль в толпу. Устарел, блядь, нахуй.

Ещё есть OpenID Connect — это типа умный братан OAuth 2.0. Он не только доступ даёт, но и подтверждает личность (аутентификация). Кидает тебе ID-токен и ещё доступ к userinfo. В общем, более комплексный подход.

Ну и для больших, серьёзных контор — SAML. Это уже не шутки, это XML, enterprise, Single Sign-On (SSO) для корпоративных систем. Тяжёлая артиллерия, но когда нужно — незаменимая хуйня.

Для современных SPA (одностраничных приложений) обычно берут связку OAuth 2.0 + JWT. И запомни, как отче наш: всё по HTTPS, и JWT только подписанный. А то потом будешь удивляться, почему у тебя данные уплыли, а ты сидишь, как пизда с ушами.