OIDC
OpenID Connect (OIDC) - протокол аутентификации. Позволяет third-party приложениям проверить подленность "identity" пользователя и получения информации о нем (profile information).
OIDC использует JWTs для обмена идентификационной информацией, которые можно получить соответствующими flows из OAuth 2.0. OIDC идентификационный слой построенный поверх OAuth 2.0 фреймворка.
OIDC позволяет пользователям аутентифицироваться с помощью стороннего Identity Provider (IdP). IdP аутентифицирует пользователя и отправляет обратно приложению идентификационный токен, который может быть использован для проверки личности пользователя.
OIDC поддерживает единый вход Single Sign-On.
OIDC обратно совместим с OAuth 2.0.
OpenID vs. OAuth2
OAuth 2.0 - шаринг ресурсов. Авторизация. Доступ к ресурсам.
OIDC - аутентификация пользователей. Его цель - предоставить один логин для входа на несколько приложений.
Flows
Подход к проведению аутентификации будет зависеть как и в OAuth от того умеет ли клиент хранить секреты и есть ли у него backend.
Authorization Code
IdP возвращает authorization code клиенту. По authorization code можно получить ID Token и Access Token. Применим для клиентов, которые могут безопасно хранить секреты.
Шаги аутентификации
- Клиент подготавливает запрос на аутентификацию, содержащий требуемые параметры запроса.
- Клиент отправляет запрос на Сервер авторизации.
- Сервер авторизации выполняет аутентификацию Конечного пользователя.
- Сервер авторизации получает согласие/авторизацию конечного пользователя.
- Сервер авторизации отправляет Конечного пользователя обратно Клиенту с кодом авторизации.
- Клиент запрашивает ответ, используя код авторизации в Token Endpoint.
- Клиент получает ответ, содержащий ID Token и Access Token в тексте ответа.
- Клиент проверяет ID Token и извлекает идентификатор субъекта конечного пользователя.