Схема интеграционного взаимодействия
Общая схема интеграционного взаимодействия приведена на диаграмме последовательности ниже.
Основные элементы диаграммы:
- Клиент B2B - Представитель или ответственные лица компании, которые инициируют интеграцию с Лемана ПРО;
- Поддержка B2B - команда интеграторов/поддержки интеграции со стороны Лемана ПРО;
- Приложение клиента B2B- Приложение клиента (Маркетплейс, внутренний ресурс и.т.д), для которого планируется интеграция;
- Keycloak B2B - Сервис аутентификации B2B-клиентов в компании Лемана ПРО;
- APIGateway - шлюз, где опубликованы доступные для B2B-клиента API-методы.
Описание процесса взаимодействия
- Клиент B2B обращается к интеграторам (SupportB2B), со стороны Лемана ПРО с заявкой на интеграцию. Шаблон заявки на интеграцию;
- Команда интеграторов предоставляет клиенту необходимые данные для интеграции: client_id, client_secret – для получения токена в Keycloak;
- Приложение клиента B2B обращается в Keycloak B2B для получения JWT-токена, используя полученные client_id и client_secret на шаге 2.
- Keycloak B2B возвращает JWT-токен (access_token) приложению клиента B2B. По истечению срока жизни токена, приложение клиента повторно отправляет запрос на получение токен. Время жизни токена можно увеличить, по запросу;
- Приложение клиента B2B обращается к API Gateway, передавая JWT-токен(access_token) в качестве авторизационных данных;
- API Gateway обрабатывает запрос и возвращает ответ приложению клиента B2B.
Получение JWT-токена авторизации
Перед отправкой запроса, к опубликованным методам контракта API, на APIGateway, для которых в принимаемых значениях указан access_token, необходимо получить токен авторизации с помощью POST запроса на следующий адрес:
- https://internal-customer-preprod.auth.lmru.tech/realms/b2b – Preproduction server
- https://customer.auth.lemanapro.ru/realms/b2b – Production server
В теле запроса заполняем client_id, client_secret и grant_type=client_credentials Пример запроса:
curl -X 'POST' \
'https://customer.auth.lemanapro.ru/realms/b2b/protocol/openid-connect/token' \
- H 'accept: application/json' \
- H 'Content-Type: application/x-www-form-urlencoded' \
- d 'grant_type=client_credentials&client_id="Полученный client_id"&client_secret="Полученный client_secret"'
Пример ответа:
{
"access_token": "Зашифрованный JWT-токен",
"expires_in": 300,
"refresh_expires_in": 0 ,
"token_type":"Bearer,
"not-before-policy":0,
"scope": "email profile"
}
По вопросам интеграции писать на почту: b2b_integration@lemanapro.ru