Настройка аутентификации через Keycloak

Инструкция подготовлена на примере Keycloak версии 20.0.2.

Терминология

  • Authentication — идентификация и проверка пользователя.
  • Authorization — предоставление доступа пользователю.
  • Realm — пространство для управления пользователями, приложениями, ролями и группами. Пользователь принадлежит к конкретному realm. Realm’ы изолированы друг от друга.
  • Clients — клиенты (приложения), которые могут обращаться к Keycloak для аутентификации пользователя. Чаще всего клиентами являются приложения и службы, которые используют Keycloak для обеспечения единого входа в систему.
  • Users — пользователи, которые могут войти в вашу систему. Им можно назначить членство в группе и/или определенные роли.
  • Roles — определяют тип/категорию пользователя. Читатель, писатель — типичные роли. Обычно, приложения назначают доступ и разрешения конкретным ролям, а не отдельным пользователям.

Приложения Визиона требующие клиентов

  • Vision Core
  • Grafana

Для каждого приложения необходимо создать клиента.

1.1 Создание клиента#

Выберите необходимый Realm, перейдите страницу Clients и нажмите на кнопку Create client, после чего укажите следующие параметры.

  • Client type: openid-connect

  • Client ID: <ИМЯ КЛИЕНТА>

    • Vision Core: vision-core-client

    • Grafana: vision-grafana-client

      После ввода параметров нажмите Next.

  • Client authentication: ON

  • Authorization: OFF

  • Standard Flow: ON

  • Direct Access Grants: ON

  • Implicit Flow: OFF

После ввода параметров нажмите Save.

1.2 Параметры клиента#

После создания клиента откроется страница Client details.

Вкладка «Settings»#

Необходимо указать адреса приложения.

  • Root URL: <root_url>
  • Home URL (Base URL в ранних версиях): <root_url>
  • Valid Redirect URIs:
    • Vision Core: <root_url>/vision/api/v1/auth/login
    • Grafana: <root_url>/login/generic_oauth
  • Web Origins: <root_url>
  • Admin URL: <root_url>

<root_url>:

  • для Vision Core: https://<ip_vision_vm>:8092
  • для Grafana: https://<ip_vision_vm>/vision/grafana

При доступности приложений с нескольких <root_url> (по IP, по домену) укажите все допустимые варианты для Valid redirect URIs и Web Origins.

Прочие параметры конфигурации можно оставить со значениями по умолчанию.

После ввода параметров нажмите Save.

Вкладка «Client scopes» (Mappers в ранних версиях):#

Для клиента Grafana требуется добавить поля с ролями клиента в токен идентификатора (id token) и в информацию о пользователе (user info).

  1. В таблице кликните по ссылке вида -dedicated
  2. На открывшейся странице нажмите Configure a new mapper
  3. В списке выберите категорию User Client Role
  4. На странице Add mapper укажите параметры:
  • Name: roles
  • Client ID: 
  • Client Role prefix: <оставить-пустым>
  • Multivalued: ON
  • Token Claim Name: roles
  • Claim JSON Type: String
  • Add to ID token: ON
  • Add to access token: OFF
  • Add to userinfo: ON

После ввода параметров нажмите Save.

Вкладка Roles#

Необходимо создать роли клиента, которые затем можно пользователям Keycloak для доступа к приложениям. Имена ролей чувствительны к регистру. Для создания роли нажмите Create role.

В клиенте для Vision Core создайте следующие роли:

Role name Description (необязательно)
writer Полный доступ
reader Только чтение

В клиенте для Grafana:

Role name Description (необязательно)
grafanaadmin Server administrator
admin Admin
editor Editor
viewer Viewer

Вкладка «Credentials»#

По умолчанию на данной вкладке должны быть указаны следующие параметры

  • Client Authenticator: Client Id and Secret
  • Client secret: *****

При конфигурации приложений нам понадобятся следующие данные клиентов:

  • Client ID
  • Client secret

1.3 Назначение ролей пользователям#

  1. Откройте раздел Users
  2. Выберите необходимого пользователя или создайте нового.
  3. Перейдите во вкладку Role mapping и нажмите Assign role
  4. Нажмите на выпадающий список фильтра и выберите Filter by clients
  5. Отметьте необходимые роли и нажмите Assign

При необходимости, параметры аутентификации и авторизации могут быть скорректированы в файлах конфигурации на сервере Визиона:

  • Vision Core

    /opt/skala-r/etc/vision/server/vision_core/config.yml в секции [auth].

  • Grafana

    /opt/skala-r/etc/vision/server/grafana/grafana.ini в секциях [server], [auth], [auth.anonymous], [auth.generic_oauth].