Инструкция подготовлена на примере 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).
- В таблице кликните по ссылке вида -dedicated
- На открывшейся странице нажмите Configure a new mapper
- В списке выберите категорию User Client Role
- На странице 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 Назначение ролей пользователям#
- Откройте раздел Users
- Выберите необходимого пользователя или создайте нового.
- Перейдите во вкладку Role mapping и нажмите Assign role
- Нажмите на выпадающий список фильтра и выберите Filter by clients
- Отметьте необходимые роли и нажмите Assign
При необходимости, параметры аутентификации и авторизации могут быть скорректированы в файлах конфигурации на сервере Визиона:
-
Vision Core
/opt/skala-r/etc/vision/server/vision_core/config.yml
в секцииauth:
. -
Grafana
/opt/skala-r/etc/vision/server/vision_core/grafana.yml
в секцияхserver:, auth:, auth.anonymous:, auth.generic_oauth:
(см. Настройка авторизации в Grafana .