OpenID Connect
OIDC (OpenID Connect) — тонкий слой поверх OAuth 2.0, добавляющий аутентификацию (кто такой юзер). "Sign in with Google/Apple/Microsoft" — почти всегда OIDC.
Ключевое отличие от OAuth
OAuth даёт access_token для API. OIDC добавляет id_token — JWT, подписанный AS, с claims о юзере.
id_token payload (пример)
{
"iss": "https://accounts.google.com",
"sub": "1234567890", // уникальный ID юзера
"aud": "your-client-id",
"exp": 1700000000,
"iat": 1699996400,
"email": "user@example.com",
"email_verified": true,
"name": "John Doe",
"picture": "https://...",
"nonce": "n-0S6_WzA2Mj" // защита от replay
}
Scopes
openid— обязательный, включает OIDC-режимprofile— name, family_name, pictureemail— email + verifiedaddress,phone
Endpoints
/.well-known/openid-configuration— discovery document/authorize— как OAuth/token— возвращает id_token + access_token/userinfo— доп. claims по access_token/jwks— публичные ключи для проверки id_token
Валидация id_token
- Достать JWK по
kidиз header. - Проверить подпись.
- Проверить
issсовпадает с ожидаемым. - Проверить
aud= твой client_id. - Проверить
exp,iat. - Проверить
nonce= тот что послал в /authorize.
Provider-ы
- Google, Microsoft, Apple, Facebook, GitHub (частично), GitLab
- Auth0, Okta, Keycloak, Authelia, Zitadel
- Yandex ID, VK ID (РФ)
Session management
OIDC Session Management (extension) — фронтовые iframe-check-and или backchannel logout. Синхронизация logout между IdP и RP.