Keycloak - Настройка авторизации

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"
  }
}

rolesPath - путь к массиву ролей пользователя в json ответа запроса userinfoURL


fields - маппинг полей пользователя Докзиллы и полей в json ответа запроса userinfoURL

Keycloak detailed log
true/false
расширенный лог при авторизации, отображение в логе ролей пользователя из ответа запроса userinfoURL


Для сопоставления ролей Keycloak и ролей, групп, компонентов в Докзилле
 используется компонент в меню  "Настройки" (кнопка "Doczilla Pro"-"Настройки") ->“Правила Keycloak“.

Принцип такой же как и у правил LDAP, только указываются роли Keycloak, а не группы AD.