Какие знаешь способы авторизации

«Какие знаешь способы авторизации» — вопрос из категории Безопасность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

  1. Cookie-based Auth
    Сервер создает сессию и отправляет cookie с session ID. Пример:
    // Серверная часть (Express)
    app.post('/login', (req, res) => {
      req.session.userId = user.id; // Сессия создается
      res.send('Logged in');
    });
  1. Token-based Auth (JWT)
    Сервер генерирует токен, клиент хранит его (обычно в localStorage). Пример:
    // Клиент
    localStorage.setItem('token', 'eyJhbGci...');
    // Запросы с заголовком
    headers: { 'Authorization': 'Bearer ' + token }
  1. OAuth/OAuth2
    Делегирование авторизации через провайдеров (Google, GitHub). Используется для SSO.

  2. Basic Auth
    Логин/пароль в заголовке (base64-encoded). Устаревший, небезопасный без HTTPS.

  3. API Keys
    Статичный ключ в заголовке или URL. Используется для сервер-серверного взаимодействия.

Нюансы:

  • JWT не требует сессий, но сложен с инвалидацией.
  • Cookies защищены HttpOnly и Secure, но уязвимы к CSRF.
  • OAuth сложен в настройке, но удобен для пользователей.