BY_ELPH_TOKEN

BY_ELPH_TOKEN предусматривает, что любой запрос, отправляемый в сервис AB, должен содержать токен авторизации (Token Auth), который выдается Elph Chat Server и проверяется на стороне AB с помощью закрытого ключа, указанного в конфигурационном .env файле в параметре SECRET_KEY_BASE.

AUTH_TYPE=BY_ELPH_TOKEN
API_SECRET_KEY="some-token-from-var-BEARER-TOKEN-PRIVATE-KEY-on-elph-chat-server"
HOST=my-address-book.host.domain


BY_KEYCLOAK_JWT

BY_KEYCLOAK_JWT предусматривает, что любой запрос, отправляемый в сервис AB, должен содержать Auth-Token внешнего Keycloak. В Elph версии 2.12.0 внешний Keycloak поставляется совместно с Elph Chat Server. Пример настройки env.override для работы с Keycloak Elph Chat Server приведен ниже:

AUTH_TYPE=BY_KEYCLOAK_JWT
HOST=my-address-book.host.domain

KEYCLOAK_HOST=my-keycloak.host.domain
KEYCLOAK_PORT="8282"
KEYCLOAK_PROTOCOL="http"
KEYCLOAK_FRONTEND_URL="https://my-proxy.host.domain/auth/"
KEYCLOAK_REALM="my-realm"
KEYCLOAK_MANAGEMENT_CLIENT_ID="keycloak-management-client-id"
KEYCLOAK_MANAGE_USERS_MANAGEMENT_CLIENT_ROLE_ID="keycloak-management-client-role-id"
KEYCLOAK_AUTO_UPDATE_ENABLE="TRUE"
KEYCLOAK_HEALTH_CHECK_WORKER_PORT=9100
KEYCLOAK_JWKS_URI="${KEYCLOAK_PROTOCOL}://${KEYCLOAK_HOST}:${KEYCLOAK_PORT}/realms/${KEYCLOAK_REALM}/protocol/openid-connect/certs"


Значения для полей KEYCLOAK_MANAGEMENT_CLIENT_ID и KEYCLOAK_MANAGE_USERS_MANAGEMENT_CLIENT_ROLE_ID вы можете получить в интерфейсе панели администратора Keycloak.

Для того чтобы найти значение для поля KEYCLOAK_MANAGEMENT_CLIENT_ID, необходимо открыть панель администратора Keycloak.

В разделе Manage realms убеждаемся, что ваш realm отмечен как "Current realm".

Переходим в раздел Clients, среди списка клиентов (поле Client ID) находим «realm-management». В адресной строке браузера отобразится искомый ID (см. рис. ниже).

Для того чтобы найти значение для поля KEYCLOAK_MANAGE_USERS_MANAGEMENT_CLIENT_ROLE_ID, вновь переходим в Clients → realm-management → Roles. Cреди списка ролей (поле Role name) находим «manage-users». В адресной строке браузера отобразится искомый ID (см. рис. ниже).

API_KEY

API_KEY предусматривает возможность получать данные из AB без отправки токена авторизации (Token Auth) на основе заранее сгенерированных ключей

Для корректной работы необходимо на основе SECRET_KEY_BASE сгенерировать API_SECRET_KEY и внести его в конфиграционный файл .env.

Для генерации API_SECRET_KEY можно использовать сервис https://jwt.io/ или ему подобные.

Переходим в раздел JWT Encoder:

В поле SIGN JWT: SECRET вставляем произвольное значение. Задаём значения для полей, указанных в HEADER и PAYLOAD. Значения для поля HEADER взять из примера ниже; значение для поля PAYLOAD задать самостоятельно исходя из следующего: не более 20 символов, включающих латинские буквы и цифры. 

Decoded Header
{
  "alg": "HS256",
  "typ": "JWT"
}
Decoded Payload
{
  "alias_id": "1111111111",
  "aud": "foobar",
  "sub": "2222222222"
}

Сгенерированное значение для атрибута API_SECRET_KEY будет отображено справа в поле JSON WEB TOKEN:

Пример файла .env.override для режима API_KEY приведен ниже:

SECRET_KEY_BASE="some-SIGN-JWT-SECRET"

AUTH_TYPE=API_KEY
API_SECRET_KEY="some-JSON-WEB-TOKEN"
HOST=my-address-book.host.domain