OIDC vs OAuth
Что такое OAuth 2.0?
OAuth 2.0 — это протокол авторизации.
Он позволяет сторонним приложениям получать ограниченный доступ к ресурсам пользователя без передачи логина и пароля.
Пример:
Приложение получает доступ к Google-диску пользователя для чтения файлов, не зная его пароля.
Что такое OIDC (OpenID Connect)?
OIDC — это надстройка над OAuth 2.0, которая добавляет аутентификацию.
Она позволяет стороннему приложению подтвердить личность пользователя и получить его профиль.
Пример:
Войти на сайт через «Войти с Google» — это OIDC.
Приложение получает подтверждение, кто вы, и ваш email/avatar/имя.
Сравнение
OAuth 2.0 | OpenID Connect (OIDC) | |
---|---|---|
Тип | Авторизация | Аутентификация + авторизация |
Цель | Доступ к ресурсам | Подтверждение личности |
ID токен | ❌ Нет | ✅ Есть |
Access токен | ✅ Есть | ✅ Есть |
Протокол основан на | HTTP + токены | OAuth 2.0 |
Используется для | API доступа | Single Sign-On (SSO) |
Пример потока OIDC (логин через Google)
-
Пользователь нажимает «Войти с Google».
-
Браузер перенаправляется на Google (авторизация).
-
Пользователь логинится и подтверждает доступ.
-
Google перенаправляет браузер обратно на сайт, передавая authorization code.
-
Сайт отправляет code на backend и получает от Google:
• ID Token → содержит информацию о пользователе (email, имя, sub — уникальный ID).
• Access Token → можно использовать для доступа к API Google (если запрашивали).
- Сайт проверяет подпись ID токена, достаёт профиль пользователя и логинит его.
🧾 Пример ID токена (JWT)
Это обычный JWT, который можно декодировать:
{
"iss": "https://accounts.google.com",
"sub": "103293882193827192",
"aud": "client-id.apps.googleusercontent.com",
"email": "user@example.com",
"email_verified": true,
"exp": 1711747200
}
📌 Главное различие в одном предложении:
• OAuth: «Ты можешь использовать мой доступ к ресурсу.»
• OIDC: «Вот доказательство, кто я такой.»