9.5 KiB
three-ds-server-compose
Репозиторий с макросервисом RBK.money 3D Secure Server для запуска внутри Docker
Сокращения
Directory Server = DS
3D Secure Server = 3DSS
Использование
docker-compose up -d
Запуск макросервиса полностью автоматизирован и производится внутри докера, образ скачивается напрямую из репозитория rbkmoney
на Docker Hub
Обращаем внимание, для корректного демо RBK.money 3D Secure Server порядок запуска:
docker-compose.yml
three-ds-server macroservice (сам макросервис 3DSS)docker-compose.yml
ds-simple-mock (пример сервиса, который может быть использован в качестве заглушки для обработкиPReq
&&AReq
запросов в DS отмакросервиса 3DSS
)docker-compose.yml
pseudo-schedulator (пример сервиса, который может быть использован в качестве заглушки для инциализацииPReq/PRes flow
вмакросервис 3DSS
)
Описание
Макросервис 3DSS
имплементирует требование по спецификации EMVCo
к 3D Secure
взаимодействию, поддерживает только аутентификацию из вебсайта (Browser-based
)
Подробнее — здесь
Конфигурация
Макросервис 3DSS
является клиентом для DS
, и использует DS
при выполенении запросов, обозначенных спецификацей EMVCo
(ссылка ниже), поэтому для корректной работы 3DSS
необходима настройка обоих доменов (сервисов)
Настройка домена совместимости (домен DS
)
При запуске макросервиса 3DSS
должен выполнить запрос на обновление карточных диапазонов PReq/PRes flow
, поэтому перед запуском макросервиса 3DSS
необходимо убедиться, что есть доступ к активному DS
, который готов принимать HTTP запросы
В этом репозитории находится ds-simple-mock, который может быть использован в заглушки для обработки PReq
&& AReq
запросов в DS
от макросервиса 3DSS
)
Подробнее — здесь
Настройка планировщика расписания
При запуске 3DSS
кто то должен выполнить запрос на обновление карточных диапазонов PReq/PRes flow
, поэтому перед запуском макросервиса 3DSS
необходимо убедиться, что подобный сервис имплементирован и готов выполнять запросы по инициализации PReq/PRes flow
в соотвествии с требованиями спецификации EMVCo
(то есть минимальный интервал между запросами — 1 час, максимальный — 24 часа)
Более детальное описание процесса — здесь -> 5.6 PReq/PRes Message Handling Requirements (page 119)
В этом репозитории находится pseudo-schedulator, который может быть использован в заглушки для инциализации PReq/PRes flow
в макросервис 3DSS
Подробнее — здесь
Настройка домена эквайера (домен 3DSS
)
На данный момент сервис поддерживает обработку 3 провайдеров {providerId}
— visa
, mastercard
, mir
- Указать в директории cert ключи
mir.p12
,visa.p12
,mastercard.p12
, которые используются3DSS
для соединения сDS
(для примера в директории нахадится тестовый сертификат)
Ключи будут использоваться параметром:
client.ds.ssl.{providerId}.trust-store: file:/opt/three-ds-server/cert/test.p12
Указать пароли для ключей:
client.ds.ssl.{providerId}.trust-store-password: {{password}}
Изменить (при необходимости) volume
volumes:
- ./three-ds-server/cert:/opt/three-ds-server/cert/:ro
- Указать адрес
DS
для каждого{providerId}
environment.{providerId}.ds-url: http://ds:8081/{providerId}/DS2/authenticate
- Настройка расписания для обновления карточных диапазонов
3DS Preparation Flow
В этом репозитории находится pseudo-schedulator, который может быть использован в заглушки для инциализации PReq/PRes flow
в макросервис 3DSS
Лучше пишите собственную импементацию
Cтандартная имплементация через rbkmoney-schedulator выключена (параметр rbkmoney-preparation-flow.scheduler.enabled: "false"
) (данный сервис тянет за собой каскад других rbkmoney сервисов, поэтому это выходит за рамки данной демонстрации)
Тестирование 3DS Authentification Flow
Для теста в 3DSS
посылаются 2 запроса, у одного "acctNumber": "2201010000000000"
, у второго "acctNumber": "4012000000001001"
В данном тесте в качестве сервиса DS
используется собственный мок-сервис ds-simple-mock
3DSS
(с помощью мок-сервиса DS
) настроен так, что "acctNumber": "2201010000000000"
ассоциирует с mastercard
, "acctNumber": "4012000000001001"
ассоциирует с visa
, и отправляет запрос в соотвествующий DS
(mir
также поддерживается для запросов)