← Назад к вопросам
Как сторонние сервисы позволяют организовать авторизацию?
2.0 Middle🔥 231 комментариев
#JavaScript Core
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Внешние сервисы авторизации
В современной веб-разработке организация авторизации часто полагается на сторонние сервисы. Это упрощает разработку и повышает безопасность приложения.
OAuth 2.0 — стандартный протокол авторизации
OAuth 2.0 — самый популярный стандарт для делегированной авторизации. Он позволяет пользователям авторизоваться через учётные записи социальных сетей:
const handleGoogleLogin = (response) => {
const { credential } = response
fetch('/api/auth/google', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ token: credential })
})
.then(res => res.json())
.then(data => {
localStorage.setItem('authToken', data.accessToken)
window.location.href = '/dashboard'
})
}
OpenID Connect (OIDC)
OpenID Connect — слой идентификации поверх OAuth 2.0:
const oidcConfig = {
authority: 'https://accounts.google.com',
client_id: 'YOUR_CLIENT_ID',
redirect_uri: 'http://localhost:3000/callback',
response_type: 'code',
scope: 'openid profile email'
}
const parseIdToken = (token) => {
const base64Url = token.split(\".\")[1]
const base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\")
const jsonPayload = decodeURIComponent(
atob(base64).split(\"\").map((c) => \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2)).join(\"\")
)
return JSON.parse(jsonPayload)
}
Популярные платформы
Google Sign-In:
- Простая интеграция через Google API
- Большая база пользователей
- Встроенная двухфакторная аутентификация
GitHub Authentication:
const githubAuthUrl = `https://github.com/login/oauth/authorize?client_id=${CLIENT_ID}&scope=user`
window.location.href = githubAuthUrl
Facebook Login, Яндекс ID:
- Социальная информация пользователя
- Широкое распространение
JWT токены и управление сессией
После успешной авторизации сервис выдаёт токены:
const token = localStorage.getItem('authToken')
fetch('/api/user/profile', {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
})
.then(res => {
if (res.status === 401) {
redirectToLogin()
}
return res.json()
})
const refreshAccessToken = async () => {
const refreshToken = localStorage.getItem('refreshToken')
const response = await fetch('/api/auth/refresh', {
method: 'POST',
body: JSON.stringify({ refreshToken })
})
const { accessToken } = await response.json()
localStorage.setItem('authToken', accessToken)
}
Безопасность
Ключевые моменты:
- HTTPS только — все коммуникации должны быть зашифрованы
- Защита от CSRF — использование CSRF токенов
- Валидация токенов — проверка подписи JWT на бэкенде
- Secure cookies — флаги HttpOnly и Secure
- Ограничение области доступа — правильные scope в OAuth
Сторонние сервисы авторизации значительно упрощают управление пользователями и повышают надёжность системы аутентификации.