Протокол OpenID Connect в системе Keycloak работает следующим образом: 1
- Владелец ресурса инициирует запрос на авторизацию, например, пытаясь получить доступ к ограниченному ресурсу без действующей сессии или токена или нажимая на кнопку «Войти». 1
- Владелец ресурса проходит аутентификацию и авторизацию в сервисе, включённом OpenID Connect, и перенаправляется обратно в приложение с кодом авторизации. 1
- Сервер обменивается кодом авторизации, и клиентский сервер приложения получает токен доступа и токен идентификации. 1
Есть два варианта использования OIDC: 2
- Приложение просит сервер Keycloak аутентифицировать пользователя. 2 После успешного входа приложение получает токен идентификации и токен доступа. 2 Токен идентификации содержит информацию о пользователе, такую как имя пользователя, электронную почту и другую информацию о профиле. 2 Токен доступа подписан цифровой подписью и содержит информацию о доступе (например, сопоставления ролей пользователя), которую приложение может использовать, чтобы определить, к каким ресурсам пользователь может получить доступ в приложении. 2
- Клиент хочет получить доступ к удалённым сервисам. 2 В этом случае клиент просит Keycloak получить токен доступа, который можно использовать для вызова других удалённых сервисов от имени пользователя. 2 Keycloak аутентифицирует пользователя, затем спрашивает у него согласие предоставить доступ запрашивающему его клиенту. 2 После этого клиент получает токен доступа. 2 С его помощью клиент может совершать вызовы REST к удалённым сервисам. 2 REST-сервис извлекает токен доступа, проверяет его подпись и на основе информации о доступе внутри токена решает, обрабатывать ли запрос. 2