Интеграция с Keycloak
Настройка Keycloak
-
Настроить авторизацию в YuChat через Keycloak
-
Импортировать конфигурацию клиента для возможности авторизации с использованием KC.
Конфигурация: yuchat_web.json
-
На вкладке "General settings" → "Valid redirect URIs", "General settings" → "Valid post logout redirect URIs" https://yuchat.mycompany.com/*
- заменить на эндпоинт вашего сервера YuChat
-
-
Импортировать конфигурацию для возможности авторизации в консоли администратора с использованием KC.
Конфигурация: yuchat-dashboard.json
-
На вкладке "General settings" → "Valid redirect URIs", "General settings" → "Valid post logout redirect URIs" https://admin.yuchat.mycompany.com/*
- заменить на эндпоинт вашего сервера YuChat
-
-
Импортировать конфигурацию сервера для доступа backend YuChat в Keycloak.
Конфигурация: yuchat.json
-
На вкладке "Credentials":
- В разделе "Client Authenticator" установить значение "Client Id and Secret"
- В разделе "Client Secret" сгенерировать секрет и скопировать в конфигурацию backend YuChat (параметр "keycloak.clientSecret")
-
На вкладке "Service accounts roles":
- добавить роли "manage-events" и "manage-users"
-
-
Добавить ключ RSA для шифрования токенов пользователя
- Realm settings → Keys
- Скопировать Kid ключа RS256 (далее будет использоваться для параметра keycloak.sigKeyKid конфигурации сервера)
- Realm settings → Keys
-
-
Настроить синхронизацию с каталогом пользователей посредством протокола ldap
- Раздел "User federation" → "Add new provider" → "LDAP"
- В разделе "Connection and authentication settings" настроить параметры подключения по протоколу ldap к вашему каталогу
- В разделе "LDAP searching and updating" → "User DN" указать OU должен быть смигрирован в Keycloak
- В раделе "Advanced settings" → "Trust Email" установить значение в "On"
- На вкладке "Mappers" добавить маппинги для атрибутов пользователей (при необходимости)
- department = Департамент в YuChat
- position = Должность в YuChat
- phone = Номер телефона в YuChat
- displayName = Имя пользователя в YuChat
-
Настроить ttl для выдаваемых токенов
- Realm settings → Sessions → SSO Session Settings → SSO Session Idle → 5 days
- Realm settings → Sessions → SSO Session Settings → SSO Session Max → 10 days
- Realm settings → Tokens → Access tokens → Access Token Lifespan → 15 min
Настройка backend
-
Конфигурационные параметры для настройки подключения клиента к keycloak
yuchat:
client:
config:
supportedAuthTypes: "email,keycloak" #Добавить keycloak чтобы клиенты понимали что авторизация через keycloak доступна
keycloakUrl: "https://auth.yuchat.company.com" #Эндпоинт keycloak для доступа клиентов (в т.ч. снаружи)
keycloakRealm: "master" #Реалм keycloak с пользователями и конфигурацией
keycloakClientId: "yuchat_web" #ClientId настроенныый ранее -
Конфигурацио нные параметры для настройки подключения сервера к keycloak
keycloak:
enabled: true #Вкл/вкл интеграция с keycloak
serverUrl: https://auth.yuchat.company.com #Эндпоинт для доступа в keycloak с сервера
realm: master #Реалм keycloak с пользователями и конфигурацией
clientId: yuchat #ClientId для доступа backend в keycloak настроенныый ранее
clientSecret: "${KC_CLIENT_SECRET}" #Секрет сгенерированный ранее
sigKeyKid: "${KC_SIG_KEY_SECRET}" #Приватный ключ для подписи токенов сгенерированный ранее -
Конфигурация синхронизации пользователей
user:
sync:
enabled: true #Вкл/выкл синхронизация с Keycloak
cron: "*/5 * * * *" #cron-expression расписания синхронизации
lockAtLeastFor: PT3M #системный параметр (не менее минимального времени синхронизации)
lockAtMostFor: PT6M #системный параметр (более максимального времени синхронизации)
defaultMapping: #Дополнительные настройки синхронизации (значения по умолчанию указаны ниже, не обязательно для заполн ения)
DEPARTMENT: department #Подразделение
POSITION: position #Должность
PHONE: phone #Телефон
ENTRY_DN: entryDn #Поле в Keycloak, в котором будет содержаться OU LDAP, заданный выше
FULL_NAME: displayName #Поле в KC в котором будет содержаться полное имя пользователя, например Иван Иванович Иванов
orgUnits: #настройка обхектов синхронизации
- workspaceId: "d16wvhMJkm" #Id воркспейса, в который будут добавляться пользователи при синхронизации
ldapOU: "dc=company,dc=com" #Org unit ldap, из которого будут синхронизироваться пользователи
additionalMapping: #Дополнительные настройки синхронизации для переопределения маппинга в рамках отдельных org units (значения по умолчанию указаны ниже, не обязательно для запол нения)
DEPARTMENT: department #Подразделение
POSITION: position #Должность
PHONE: phone #Телефон
ENTRY_DN: entryDn #Поле в Keycloak, в котором будет содержаться OU LDAP, заданный выше
FULL_NAME: displayName #Поле в KC в котором будет содержаться полное имя пользователя, например Иван Иванович Иванов
updateExisted: false #Требуется ли обновлять описание пользователей при синхронизации