Keycloak — это система идентификации и управления доступом. Она позволяет управлять идентификацией пользователей, контролировать доступ к приложениям и данным, обеспечивая единую точку входа (SSO)
Для авторизации через Keycloak запускать Докзиллу необходимо по ссылке с добавление /oauth?provider=keycloak
например: http://localhost:9080/oauth?provider=keycloak
Настройка файлов конфигурации
1. Для включения возможности использования Keyсloak аутентификации нужно в конфиге ./doczilla/conf/server.properties указать параметры
## включение авторизации
web.server.sso.authenticator=OAuth
## автоматическое создание пользователей
trusted.users.create=true
2. Указать настройки сервера Keyсloak в конфиге ./doczilla/conf/oauth/config.json
- clientId,- clientSecret,- authorizationPageURL -адрес страницы аутентификации пользователей через протокол OpenID Connect с параметрами:
response_type=code-Указывает, что приложение ожидает получить код авторизации, который затем может быть обменен на токены доступа и идентификации.scope=openid profile-Указывает на разрешения, которые запрашивает приложение. В данном случае, оно запрашивает базовую информацию (openid) и информацию о профиле пользователя (profile).redirect_uri=http://localhost:9080/oauth-URL, на который будут перенаправлены пользователи после успешной аутентификации и получения кода авторизации.- При выполнении запроса к нему добавятся параметры
"&client_id=" и "&state="
- userinfoURL -используется для получения информации о пользователе, который был аутентифицирован с помощью OpenID Connect. Этот запрос возвращает информацию о пользователе, такую как имя, фамилия, адрес электронной почты, роли(нужно настроить в Keyсloak соответствующий маппер) и другие атрибуты профиля.
- loginProperty -поле в json ответа запроса userinfoURL , в котором находится логин пользователя.
- tokenURL -используется для обмена кода авторизации на токены доступа и идентификации.
Пример настройки файла config.json
{
"keycloak": {
"clientId": "doczilla",
"clientSecret": "1234567890AaBbCcDdEeFfGgHhIiJjKk",
"authorizationPageURL": "http://server-keycloak/realms/name-realm/protocol/openid-connect/auth?response_type=code&scope=openid%20profile&redirect_uri=http://localhost:9080/oauth",
"userinfoURL": "http://server-keycloak/realms/name-realm/protocol/openid-connect/userinfo",
"loginProperty": "preferred_username",
"tokenURL":"http://server-keycloak/realms/name-realm/protocol/openid-connect/token"
}
}
Параметры Keycloak в настройках Докзиллы
3. Заходим в Докзиллу пользователем с правами Админа, переходим в меню "Настройки" (кнопка "Doczilla Pro"-"Настройки") -> "Параметры" -> "Keycloak"

| Свойство | Значение | Примечание |
|---|---|---|
| Keycloak config | { "rolesPath": "realm_access/roles", "fields": { "firstName": "given_name", "lastName": "family_name", "phone": "telephoneNumber", "email": "email" } } |
|
| Keycloak detailed log | true/false | расширенный лог при авторизации, отображение в логе ролей пользователя из ответа запроса userinfoURL |
Для сопоставления ролей Keycloak и ролей, групп, компонентов в Докзилле
используется компонент в меню "Настройки" (кнопка "Doczilla Pro"-"Настройки") ->“Правила Keycloak“.
Принцип такой же как и у правил LDAP, только указываются роли Keycloak, а не группы AD.