Перейти к содержанию

OAuth авторизация через KeyCloak.

Настройка авторизации.

Настройка в KeyCloak.

Создаем новый realm или в существующем идем в список клиентов и создаем нового. Вводим уникальный ID клиента и его имя.

keycloak1.png

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

keycloak2.png

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

keycloak3.png

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

keycloak4.png

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

keycloak5.png

Настройки url адресов в логин центре.

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

keycloak6.png

Описание параметров: - FORM TEMPLATE: всегда oauth. - TITLE: Заголовок, отображаемый на форме входа при выборе этого способа авторизации. - MATCHING DRIVERS: регулярное выражение. В случае единственного OAUth провайдера можно задать ^oauth. - USER SELECTABLE: отображение этого способа входа на странице выбора способов авторизации. - URLS: oauth.

Сохраняем.

Настройка авторизации через OAuth в логин центре.

Идем в Config / authentication. Добавляем в секции oauth.drivers новый драйвер авторизации и заполняем его поля.

Параметры драйвера и соединения с KeyCloak.

keycloak7.png

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

Настройка calback url адресов.

keycloak8.png

Параметр 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 из параметров 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 и логин центре.

keycloak9.png

Эти параметры будут использованы при первом входе пользователя в логин центре для заполнения полей профиля в логин центре.

Настройка предпочтительного способа входа.

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

adfs-16.png

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

adfs-17.png

Значение параметра Default driver должно соответствовать имени одного из драйверов аутентификации (usernamePassword, saml-имя, activedirectory-имя, oauth-имя и т. д., где «имя» — это установленное Unique name в Config / Authentication).

В данном случае мы задали Unique name как keycloak и мы добавляли oauth drivers. Поэтому значение этого поля будет oauth-keycloak.

Info

Если установить oauth как предпочтительный способ входа, после входа пользователя по адресу логин центра, он будет сразу перенаправлен на форму авторизации в keycloak. (или сразу в логин центр если был ранее авторизован в других сервисах) Выбор других способов входа становится недоступен. Поэтому пользователи, которые входят через учетные данные в логин центре должны входить по полной ссылке на форму авторизации в ЛЦ. https://адрес_логин_центра/username

Перезапуск логин центра.

После внесения изменений в работу авторизации логин центра, не все настройки могут применится без перезапуска логин центра. Поэтому по окончании настроек требуется его перезапуск. Для этого подключаемся к серверу логин центра по ssh. Входим в каталог установленного логин центра и выполняем последовательно:

./manage stop
./manage start