Настройка авторизации через SSO (Keycloak)

Сервер BOOCO Astra (v 2.x) / Настройка авторизации, формы и страницы входа

Данный способ позволяет пользователям авторизовываться через корпоративный сервис авторизации Keycloak.

Для работы данного метода авторизации необходимо, чтобы BOOCO работал через протокол https.

Для настройки необходимо выполнить следующие шаги:

  • создайте приложение (клиента) в настройках Keycloak;
  • настройте внешнюю авторизацию в микросервисе bosql;
  • настройте booco.yml для разрешения SSO Keycloak.

Создание приложения (клиента) в настройках Keycloak

Заполните следующие поля:

  1. В разделе Clients на закладке Settings:
    • ClientID — например, dev-booco
    • Root URL — например, https://dev.booco.ru
    • Home URL — например, https://dev.booco.ru
    • Valid redirect URIs — например, https://dev.booco.ru/*
    • Web origins — например, https://dev.booco.ru
  2. В разделе Clients на закладке Settings в подразделе Capability config:
    • Standard flowOn
    • Direct access grantsOn
    • ⚠️
      Если другие параметры в этом разделе будут включены, то интеграция с Keycloak может не работать.
  3. В разделе Clients на закладке Advanced:
    • Use refresh tokensOn

Настройка внешней авторизации в микросервисе bosql

В переменных окружающей среды микросервиса bosql (обычно задаются через файл .env) настройте следующие пременные:

  • KEYCLOAK_ISSUER — издатель JWT-токенов, которые получают пользователи при SSO-авторизации (например, https://keycloak.booco.ru/realms/booco-realm). JWT-токен пользователя будет проверяться со значением данной переменной;
  • KEYCLOAK_PUBLIC_KEY — публичный ключ для проверки подписи JWT-токена (ключ указывается без -----BEGIN PUBLIC KEY----- и ----END PUBLIC KEY-----.
  • Указывается в разделе Realm Settings, закладка Keys, алгоритм RS256.

Настройка booco.yml

Авторизация через SSO в настоящий момент работает только в браузере.

Для настройки авторизации через SSO Keycloak в booco.yml укажите нужные значения:

login:
  # Настройка авторизации для браузеров
  web:
    methods:
      external: true

  external:
    clientId: dev-booco
		realm: booco-realm
		url: https://keycloak.booco.ru
В данном примере настроена SSO-авторизация для браузеров.

Кроме указания методов авторизации, необходимо также заполнить раздел external:

  • clientId — ID приложения (клиента) в Keycloak;
  • realm — название realm, в котором создано приложение и через который будет осуществляться авторизация;
  • url — адрес сервера авторизации.