docker-compose for RBK Money 3D Secure Server Macroservice
Go to file
2021-04-12 21:52:11 +03:00
docs add README (#3) 2020-12-17 16:23:57 +03:00
ds-simple-mock Update README.md (#24) 2021-04-12 21:52:11 +03:00
pseudo-schedulator Update README.md (#24) 2021-04-12 21:52:11 +03:00
readme-resources add result image (#23) 2021-04-01 20:07:32 +07:00
samples add README (#3) 2020-12-17 16:23:57 +03:00
three-ds-server/cert actualize compose, add pseudo schedulator for init preparation flow (#15) 2021-03-30 15:28:59 +07:00
.gitignore actualize compose, add pseudo schedulator for init preparation flow (#15) 2021-03-30 15:28:59 +07:00
3DSS detailed Description.md Update README.md (#24) 2021-04-12 21:52:11 +03:00
docker-compose.yml create common network for all containers, use aliases for service access (#16) 2021-03-30 18:04:03 +07:00
LICENSE Initial commit 2020-12-16 12:16:54 +03:00
RBKMoneyAuthenticationRequest.md Update README.md (#24) 2021-04-12 21:52:11 +03:00
README.md Update README.md (#24) 2021-04-12 21:52:11 +03:00

three-ds-server-compose

Репозиторий с макросервисом RBK.money 3D Secure Server для запуска внутри Docker

Сокращения

Directory Server = DS
3D Secure Server = 3DSS

Использование

docker-compose up -d

Demo2
Запуск макросервиса полностью автоматизирован и производится внутри докера, образ скачивается напрямую из репозитория rbkmoney на Docker Hub
Обращаем внимание, для корректного демо RBK.money 3D Secure Server порядок запуска:

  1. docker-compose.yml three-ds-server macroservice (сам макросервис 3DSS)
  2. docker-compose.yml ds-simple-mock (пример сервиса, который может быть использован в качестве заглушки для обработки PReq && AReq запросов в DS от макросервиса 3DSS)
  3. docker-compose.yml pseudo-schedulator (пример сервиса, который может быть использован в качестве заглушки для инциализации PReq/PRes flow в макросервис 3DSS)

Если запуск будет произведен корректно, то по задумке автора в качестве финального результата в логах должны быть записи об успешной записи карточных диапазонов в хранилище
alt text

Описание

Макросервис 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

  1. Указать в директории 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
  1. Указать адрес DS для каждого {providerId}
environment.{providerId}.ds-url: http://ds:8081/{providerId}/DS2/authenticate
  1. Настройка расписания для обновления карточных диапазонов 3DS Preparation Flow

В этом репозитории находится pseudo-schedulator, который может быть использован в качестве заглушки для инциализации PReq/PRes flow в макросервис 3DSS
Подробнее — ЗДЕСЬ

Лучше пишите собственную импементацию
андартная имплементация через 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 также поддерживается для запросов)
Demo3