Настройка авторизации.
Создаем новый realm или в существующем идем в список клиентов и создаем нового. Вводим уникальный ID клиента и его имя.
Включаем авторизацию
Задаем url адрес логин центра
далее нам понадобятся Credentials
И адреса соединения с сервером keycloak. Для их получения идем в настройки realm'а (Realm settings) и на первой вкладке General внизу переходим по ссылке OpenID Endpoint Configuration
Идем в админке логин центра в настройки Urls (Config / urls
)
Описание параметров:
Сохраняем.
Идем в Config / authentication
. Добавляем в секции oauth.drivers новый драйвер авторизации и заполняем его поля.
Параметр redirect_uri формируется как адрес_логин_центра/oauth/oaut-unicuq-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
из параметров realms OpenID 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
из параметров realms OpenID Endpoint Configuration
USER TOKEN CALLBACK URL: равно параметру userinfo_endpoint
из параметров realms OpenID 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
Если установить oauth как предпочтительный способ входа, после входа пользователя по адресу логин центра, он будет сразу перенаправлен на форму авторизации в keycloak. (или сразу в логин центр если был ранее авторизован в других сервисах) Выбор других способов входа становится недоступен. Поэтому пользователи, которые входят через учетные данные в логин центре должны входить по полной ссылке на форму авторизации в ЛЦ.
https://адрес_логин_центра/username
После внесения изменений в работу авторизации логин центра, не все настройки могут применится без перезапуска логин центра. Поэтому по окончании настроек требуется его перезапуск. Для этого подключаемся к серверу логин центра по ssh. Входим в каталог установленного логин центра и выполняем последовательно
./om stop
./om start