three-ds-server-compose/ds-simple-mock
2021-04-12 21:52:11 +03:00
..
src/main actualize module (#12) 2021-03-29 14:41:03 +07:00
.gitignore add ds-simple-mock (#2) 2020-12-17 15:52:09 +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
Dockerfile actualize module (#12) 2021-03-29 14:41:03 +07:00
pom.xml actualize module (#12) 2021-03-29 14:41:03 +07:00
README.md Update README.md (#24) 2021-04-12 21:52:11 +03:00

ds-simple-mock

Сервис, который может быть использован в качестве DS для обработки 3DS Preparation Flow && 3DS Authentification Flow в рамках демонстрации работы RBK.money 3D Secure Server

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

docker-compose up -d

Demo1
Cборка и запуск сервиса полностью автоматизированы и производится внутри докера, дополнительно локально (maven, openjdk11 и тд) ничего устанавливать не нужно. Сборка сервиса описана в Dockerfile, запуск описан в docker-compose.yml
Обращаем внимание, для корректного демо 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)

Сервис НЕ умеет отдавать отличающиеся ARes сообщения (например, в зависимости от приходящего PAN в запросе AReq/ARes flow), ответы, которые возвращает сервис статичны. В стандартной имплементации мока DS иммитация стандартной логики DS производится по передаваемому PAN в запросе, сервис генерирует успешные и неудачные ARes сообщения

Описание

Сервис имплементирует элементарную логику DS — принимает и отвечает статичными сообщениями, обозначенных спецификацей EMVCo
На данный момент сервис поддерживает обработку 3 провайдеров {providerId}visa, mastercard, mir
Пример 3DS Authentification Flow

-> Request [POST] /{providerId}/DS2/authenticate
{
  "messageType": "AReq",
  "messageVersion": "2.1.0",
  ...
}

<- Response [POST] /{providerId}/DS2/authenticate
{
  "messageType": "ARes",
  "messageVersion": "2.1.0",
  ...
}

Пример 3DS Preparation Flow

-> Request [POST] /{providerId}/DS2/authenticate
{
  "messageType": "PReq",
  "messageVersion": "2.1.0",
  ...
}

<- Response [POST] /{providerId}/DS2/authenticate
{
  "messageType": "PRes",
  "messageVersion": "2.1.0",
  ...
}

Конфигурация

Дополнительно настраивать ничего не нужно, но обратите внимание, что порты не проброшены наружу, потому что никаких внешних запросов от 3DS Requestor / 3DSS-клиента напрямую не производится