Провайдер OAuth2: Authorization Code - Продукт Modus BI
OAuth2: Authorization Code и Keycloak используются для управления аутентификацией и авторизацией.
Keycloak — это открытое решение для управления идентификацией и доступом (IAM). Он поддерживает протоколы OAuth2, OpenID Connect и SAML. Keycloak предоставляет единый вход (SSO), управление пользователями, ролями и разрешениями, а также интеграцию с различными приложениями.
В потоке Authorization Code пользователь перенаправляется на страницу авторизации для ввода своих данных. После успешной авторизации сервер возвращает код, который затем обменивается на токен доступа.
Версии
Keycloak: 26.0.1.
Версия портала: 3.6.20.
Версия сервера: 3.7.21.
Версия клиента: 3.7.36.
Настройка тестового экземпляра Keycloak
Войдите в панель управления Keycloak.
В данном случае это http://192.168.3.107:8080 (admin/admin).
Выберите интересующую область (master).
В меню выберите "Clients".
Нажмите на кнопку "Create client".
Заполните поля:
- Client type: OpenID Connect;
- Client ID: bi.test.ru;
- Name: bi.test.ru.
Нажмите на кнопку "Next".
Включите переключатель "Client authentication".
Нажмите на кнопку "Next".
Заполните поля:
- Root URL: http://bi.test.ru/;
- Valid redirect URls: http://bi.test.ru/v1/api.
Нажмите на кнопку "Save".
Выберите созданный объект. Перейдите на вкладку "Credentials". Запомните значение поля "Client Secret".
Настройка Аналитического портала
Войдите в панель управления Аналитического портала.
Перейдите на вкладку "Настройки".
В меню выберите раздел "Настройки безопасности".
Нажмите на кнопку "Добавить конфигурацию"
Заполните поля:
- Имя: Авторизация;
- Отображаемое наименование: Авторизация;
- Выбрать провайдера авторизации: OAuth2: Authorization Code;
- Выбрать тип хеширования: SHA-256.
Нажмите на кнопку "Создать".
Нажмите на кнопку "Редактировать" в строке созданного объекта.
Заполните поля:
- Необходимо ввести имя пользователя: Вкл;
- Необходимо ввести пароль: Вкл;
- Идентификатор приложения: "bi.test.ru";
- Код приложения: копируем записанный код из этапа настройки Keycloak.
- Адрес сервера авторизации: http://192.168.3.107:8080/realms/master/protocol/openid-connect/auth;
- Адрес получения маркера доступа: http://192.168.3.107:8080/realms/master/protocol/openid-connect/token;
- Адрес получения данных пользователя: http://192.168.3.107:8080/realms/master/protocol/openid-connect/info;
- Имя атрибута из которого получать 'login' пользователя: email;
- Имя атрибута из которого получать 'Имя' пользователя: given_name;
- Имя атрибута из которого получать 'Фамилию' пользователя: family_name;
- Имя атрибута из которого получать 'Отчество' пользователя: middle_name;
- Имя атрибута из которого получать 'E-mail' пользователя: email;
- Получать области пользователя (разделенные пробелом): openid profile email groups;
- Атрибуты для установки профилей (разделенные пробелом): groups;
- Создавать пользователя: Вкл;
- Устанавливать профили: Вкл;
- Устанавливать роли из групп: Вкл.
Нажмите на кнопку "Сохранить".
Создание пользователей в Keycloak
Войдите в панель управления Keycloak. В меню выберите раздел "Users". Нажмите на кнопку "Add user".
Заполните поля:
- Email verified: On;
- Username: test;
- Email: test@test.ru;
- First name: testF;
- Last name: testL;
Перейдите на вкладку "Credentials". Нажмите на кнопку "Set password".
Заполните пароль пользавателя и его подтверждение. Нажмите на кнопку "Save".
Попытка входа в Аналитический портал (ошибка)
Перейдите на страницу входа Аналитического портала. Выберите появившийся способ авторизации "Авторизация".
Отобразиться ошибка "Invalid Scope", т.к. не совпадают переданные области, потому что по умолчанию в Keycloak отсутствует передача атрибута членства в группах.
Настройка в Keycloak передачи атрибута членства в группах
Войдите в панель управления Keycloak. В меню выберите раздел "Client scopes". Нажмите на кнопку "Create client scope".
Заполните поля:
- Name: groups;
- Description: Group Membership;
- Type: Default;
- Protocol: OpenID Connect.
Нажмите на кнопку "Save".
Выберите созданный объект. Перейдите на вкладку "Mappers". Нажмите на кнопку "Configure a new mapper".
Из списка выберите "Group Membership".
Заполните поля:
- Name: groups;
- Token Claim Name: groups.
Нажмите на кнопку "Save".
В меню выберите раздел "Clients". Выберите созданный клиент авторизации (bi.test.ru). Перейдите на вкладку "Client scopes". Нажмите на кнопку "Add client scope".
Выберите созданную область (groups). Нажмите на кнопку "Add", выберите значение "Default".
Вход в Аналитический портал
Перейдите на страницу входа Аналитического портала. Выберите появившийся способ авторизации "Авторизация".
Отобразиться страница авторизации Keycloak. Авторизуйтесь через аккаунт созданного пользователя.
Настройка профиля доступа
Добавление группы в Keycloak
Войдите в панель управления Keycloak. В меню перейдите в раздел "Groups". Нажмите на кнопку "Create group".
Заполните поле:
- Name: analytic.
Нажмите на кнопку "Create".
Выберите созданный объект. Перейдите на вкладку "Members".Нажмите на кнопку "Add member".
Из списка выберите ранее созданного пользователя (test). Нажмите на кнопку "Add".
Назначение доступа группе через Аналитический портал
Войдите в панель управления Аналитического портала. Перейдите на вкладку "Настройки". В меню выберите "Настройки безопасности". Нажмите на кнопку редактирования созданного профиля авторизации. Нажмите на кнопку "Настроить группы".
Нажмите на кнопку "Создать группу".
Заполните поля:
- Имя группы: идентично имени группы в Keycloak со слешем в начале;
- Отображаемое наименование группы: analytic (любое).
Нажмите на кнопку "Создать". Нажмите на кнопку "Редактировать" в строке созданного объекта.
Добавьте доступ к нужным отчетам. Нажмите на кнопки "Сохранить" и "Закрыть", а далее на кнопку "Сохранить".
Настройка Ролей
Присоединитесь к базе метаданных Аналитического портала через postgresql клиент (dbeaver). Отображаются данные таблицы "provider_group".
В столбце "role_id" на строке с заданной группой безопасности созданному профилю авторизации ставим ID необходимой роли, где:
- 1 - Администратор;
- 2 - Аналитик;
- 3 - Пользователь.
Применение профиля авторизации по умолчанию
Войдите в панель управления Аналитического портала. Перейдите на вкладку "Настройки". В меню выберите раздел "Настройки безопасности".Нажмите на кнопку редактирования созданного профиля авторизации.
Установите галочку в поле "Конфигурация по умолчанию".
Нажмите на кнопку "Сохранить".