OAuth авторизация через KeyCloak.¶
Настройка авторизации.
Настройка в KeyCloak.¶
Создаем новый realm или в существующем идем в список клиентов и создаем нового. Вводим уникальный ID клиента и его имя.

Включаем авторизацию.

Задаем url адрес логин центра.

Далее нам понадобятся Credentials.

И адреса соединения с сервером keycloak. Для их получения идем в настройки
realm'а (Realm settings) и на первой вкладке General внизу переходим по
ссылке OpenID Endpoint Configuration.

Настройки url адресов в логин центре.¶
Идем в админке логин центра в настройки Urls (Config / urls).

Описание параметров: - FORM TEMPLATE: всегда oauth. - TITLE: Заголовок, отображаемый на форме входа при выборе этого способа авторизации. - MATCHING DRIVERS: регулярное выражение. В случае единственного OAUth провайдера можно задать ^oauth. - USER SELECTABLE: отображение этого способа входа на странице выбора способов авторизации. - URLS: oauth.
Сохраняем.
Настройка авторизации через OAuth в логин центре.¶
Идем в Config / authentication. Добавляем в секции oauth.drivers новый
драйвер авторизации и заполняем его поля.
Параметры драйвера и соединения с KeyCloak.¶

- UNIQIE NAME: уникальный идентификатор драйвера. Важный параметр. Его значение будет использоваться в последующих параметрах для Callback URL.
- USER-FRIENDLY NAME: используется на форме входа.
- OAUTH CLIENT ID: идентификатор клиента, который мы задали при настройке KeyCloak.
- OAUTH CLIENT SECRET: Client secret который мы копируем из настроек клиента в KeyCloak с вкладки Credentials.
Настройка calback url адресов.¶

Параметр redirect_uri формируется как
адрес_логин_центра/oauth/oauth-unique-name. То есть на скрине логин центр
находится по адресу https://ans-lc.optimacros.com, а unique name мы в
настройках ранее задали как keycloak. Тогда этот параметр у нас примет вид:
redirect_uri=https://ans-lc.optimacros.com/oauth/oauth-keycloak
Теперь открываем OpenID Endpoint Configuration в KeyCloak.
- AUTHENTICATION CALLBACK URL: в начале содержит
authorization_endpointиз параметров realmsOpenID Endpoint Configuration. Далее идет фиксированная часть одинаковая для всех содержащая параметры авторизации.?state={state}&client_id={clientId}&response_type=code&scope=openid%20profile%20email&include_granted_scopes=true&И оканчивается полученным ранее параметромredirect_uriВ примере на скрине приведено полученное значение.https://keycloack.optimacros.com/realms/optimacros_realm/protocol/openid-connect/auth?state={state}&client_id={clientId}&response_type=code&scope=openid%20profile%20email&include_granted_scopes=true&redirect_uri=https://ans-lc.optimacros.com/oauth/oauth-keycloak - ACCESS TOKEN CALLBACK URL: равно параметру
token_endpointиз параметров realmsOpenID Endpoint Configuration. - USER TOKEN CALLBACK URL: равно параметру
userinfo_endpointиз параметров realmsOpenID Endpoint Configuration. - USER DETAILS HEADER: просто вводим
Authorization: Bearer {access_token} - ACCESS TOKEN POST PARAMETERS: в начале содержит общую часть.
code={code}&client_id={clientId}&client_secret={clientSecret}&grant_type=authorization_code&и оканчивается так же строкой с параметромredirect_uriНа примере выше:code={code}&client_id={clientId}&client_secret={clientSecret}&grant_type=authorization_code&redirect_uri=https://ans-lc.optimacros.com/oauth/oauth-keycloak
Поля профиля пользователя.¶
Ниже вносим параметры сопоставления атрибутов пользователя в keycloak и логин центре.

Эти параметры будут использованы при первом входе пользователя в логин центре для заполнения полей профиля в логин центре.
Настройка предпочтительного способа входа.¶
По умолчанию вход в логин центр происходит через логи пароль пользователя логин
центра. Прочие способы входа доступны на странице логина через
Other ways to sign in.

Для задания другого способа входа идем в раздел Config Urls и меняем
значение поля Default driver.

Значение параметра Default driver должно соответствовать имени одного из
драйверов аутентификации (usernamePassword, saml-имя, activedirectory-имя,
oauth-имя и т. д., где «имя» — это установленное Unique name в Config /
Authentication).
В данном случае мы задали Unique name как keycloak и мы добавляли oauth
drivers. Поэтому значение этого поля будет oauth-keycloak.
Info
Если установить oauth как предпочтительный способ входа, после входа пользователя по адресу логин центра, он будет сразу перенаправлен на форму авторизации в keycloak. (или сразу в логин центр если был ранее авторизован в других сервисах) Выбор других способов входа становится недоступен. Поэтому пользователи, которые входят через учетные данные в логин центре должны входить по полной ссылке на форму авторизации в ЛЦ. https://адрес_логин_центра/username
Перезапуск логин центра.¶
После внесения изменений в работу авторизации логин центра, не все настройки могут применится без перезапуска логин центра. Поэтому по окончании настроек требуется его перезапуск. Для этого подключаемся к серверу логин центра по ssh. Входим в каталог установленного логин центра и выполняем последовательно: