Ответ
Работал с JWT, OAuth 2.0 (Google, Facebook, GitHub), Basic Auth и Session-based аутентификацией.
JWT (JSON Web Tokens):
// Отправка токена в заголовке
fetch('/api/data', {
headers: { 'Authorization': `Bearer ${token}` }
});
OAuth 2.0 (на примере Google):
Использовал библиотеки типа react-oauth/google или ручную реализацию через window.open для получения access_token.
Session-based:
Работал с куками (HttpOnly, Secure) и серверными сессиями (например, Express + express-session).
Также знаком с OpenID Connect и реализовывал кастомные решения для API с HMAC-подписью запросов.
Ответ 18+ 🔞
А, ну это ж моя любимая тема — про то, как пользователей впускать, но не слишком, чтобы не набедокурили. Работал со всем этим зоопарком, да.
JWT, эти ваши JSON Web Tokens, — ну, вроде удобно, токен как билетик на руках. Только потом начинаешь думать: а как его отозвать-то, если что? Ага, чёрт, список недействительных заведи, блядь. Или срок жизни короткий делай, как у майского жука. Вот пример, как его обычно тычут в заголовок:
// Отправка токена в заголовке
fetch('/api/data', {
headers: { 'Authorization': `Bearer ${token}` }
});
OAuth 2.0 — это вообще отдельный цирк, особенно когда подключаешь Гугл, Фейсбук или Гитхаб. Библиотеки всякие типа react-oauth/google — это, конечно, святое, но иногда приходится и ручками через window.open этот самый access_token выковыривать. Чувствуешь себя таким хитрожопым интегратором, блядь.
Session-based аутентификация — старый добрый дедовский способ. Куки, HttpOnly, Secure, серверные сессии в Express. Надёжно, как танк, но иногда такое ощущение, что возишь с собой целый сундук, а не просто ключ.
А ещё баловался с OpenID Connect — это когда OAuth 2.0 решил, что ему мало просто доступ дать, а надо ещё и личность подтвердить, ёпта. И кастомные решения для API делал, где каждый запрос надо было подписывать HMAC-подписью. Это когда ты уже настолько всех подозреваешь, что без криптографической подписи даже «привет» не скажешь. Волнение ебать, терпения ноль, пока всё отладишь.
Короче, аутентификация — это как выбор замка на дверь: можно на щеколду, а можно на сейф с биометрией, но в итоге всё равно кто-нибудь забудет пароль от почты.