docker-compose for RBK Money 3D Secure Server Macroservice
Go to file
2021-04-01 19:01:04 +07:00
docs add README (#3) 2020-12-17 16:23:57 +03:00
ds-simple-mock Update README.md (#18) 2021-04-01 19:01:04 +07:00
pseudo-schedulator Update README.md (#18) 2021-04-01 19:01:04 +07:00
readme-resources part update README (#17) 2021-04-01 18:12:47 +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 (#18) 2021-04-01 19:01:04 +07: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 part update README (#17) 2021-04-01 18:12:47 +07:00
README.md Update README.md (#18) 2021-04-01 19:01:04 +07: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)

Описание

3DSS имплементирует требование по спецификации EMVCo к 3D Secure взаимодействию, поддерживает только аутентификацию из вебсайта (Browser-based)

Подробнее — [здесь](https://github.com/rbkmoney/three-ds-server-compose/blob/master/3DSS detailed Description.md)

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

3DSS является клиентом для DS, и использует DS при выполенении запросов, обозначенных спецификацей EMVCo (ссылка ниже), поэтому для корректной работы 3DSS необходима настройка обоих доменов

(обязательно) Настройка домена совместимости (домен DS)

При запуске 3DSS попытается выполнить запрос на обновление карточных диапазонов PReq/PRes flow (описание ниже, п.3), поэтому перед запуском 3DSS необходимо убедиться, что есть доступ к активному DS, который готов принимать HTTP запросы (т.е поднятый и работающий сервис)

При отсутствии активного DS можно воспользоваться сервисом ds-simple-mock, который расположен в:

three-ds-server-compose  
│
└───ds-simple-mock
    │
    └───...

(необязательно) Использование ds-simple-mock в качестве DS

Описание

ds-simple-mock имплементирует элементарную логику DS — принимает и отвечает сообщениями, обозначенных спецификацей EMVCo

На данный момент поддерживает 4 запроса:

  • POST /visa/DS2/authenticate {AReq} --> ARes
  • POST /visa/DS2/authenticate {PReq} --> PRes
  • POST /mastercard/DS2/authenticate {AReq} --> ARes
  • POST /mastercard/DS2/authenticate {PReq} --> PRes

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

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

Для использования сервиса необходимо собрать docker image с помощью Dockerfile, который расположен в корневой директории сервиса. Сам build сервиса проводится в docker container (см. /three-ds-server-compose/ds-simple-mock/Dockerfile), поэтому на локальном хосте не обязательно устанавливать необходимые зависимости для сервиса (maven, openjdk11 и тд)

Собрать и запустить сервис:

cd ds-simple-mock/
docker-compose up -d

Demo1

После запуска сервис висит на http://localhost:8081

(обязательно) Настройка домена эквайера (домен 3DSS)

Опции для настройки сервиса 3DSS в docker-compose.yml

3DSS может быть скофигурирован для работы с:

  • DS visa
  • DS mastercard
  • одновременно со всеми DS
  1. (обязательно) Указать в директории /three-ds-server-compose/three-ds-server/cert ключи visa.p12, mastercard.p12, которые используются 3DSS для соединения с DS

Ключи будут использоваться параметрами:

client.ds.ssl.visa.trust-store: file:/opt/three-ds-server/cert/visa.p12
client.ds.ssl.mastercard.trust-store: file:/opt/three-ds-server/cert/mastercard.p12

Указать пароли для ключей:

client.ds.ssl.visa.trust-store-password: {{password}}
client.ds.ssl.mastercard.trust-store-password: {{password}}

Изменить (при необходимости) volume

volumes:
  - ./three-ds-server/cert:/opt/three-ds-server/cert/:ro

2 (обязательно) Указать адреса DS visa && DS mastercard

environment.visa.ds-url: http://host.docker.internal:8081/visa/DS2/authenticate
environment.mastercard.ds-url: http://host.docker.internal:8081/mastercard/DS2/authenticate

При таких значениях параметров ds-url 3DSS будет обращаться к http://localhost:8081 как к сервису DS

3 (не обязательно) Настройка расписания для обновления карточных диапазонов (PReq/PRes flow)

Описание PReq/PRes flow можно найти в открытой спецификации EMVCo:

three-ds-server-compose  
│
└───docs
    │
    └───EMVCo_Protocol_and_Core_Functions_Specification_v2.2.0.pdf
        │
        └───5.6 PReq/PRes Message Handling Requirements (page 119)

Выключить обновление карточных диапазонов:

rbkmoney-preparation-flow.scheduler.enabled: "false" ("true" по умолчанию) 

Задать расписание обновления карточных диапазонов:

rbkmoney-preparation-flow.scheduler.schedule.cron: "0 0 * * * ?" (обновлять каждый час — по умолчанию) 

Выключить обновление карточных диапазонов для определеннного DS:

rbkmoney-preparation-flow.scheduler.ds-provider.mastercard.enabled: "false" ("true" по умолчанию) 
rbkmoney-preparation-flow.scheduler.ds-provider.visa.enabled: "true" ("true" по умолчанию) 

Запуск 3DSS с использованием docker-compose.yml

Собрать и запустить сервис:

docker-compose up -d

Demo2

После запуска сервис висит на http://localhost:8080

Тестирование 3DSS

Для проведения Authentification Flow (в соотвествии с спецификацией EMVCo) в 3DSS отправляется POST HTTP запрос на http://three-ds-server:8080/sdk:

Для теста в 3DSS посылаются 2 запроса, у одного "acctNumber": "2201010000000000", у второго "acctNumber": "4012000000001001". В данном тесте в качестве сервиса DS используется собственный мок-сервис ds-simple-mock (описание см. выше)

3DSS (с помощью мок-сервиса DS) настроен так, что "acctNumber": "2201010000000000" ассоциирует с mastercard , "acctNumber": "4012000000001001" ассоциирует с visa, и отправляет запрос в соотвествующий (mastercard/visa) DS (PReq/PRes flow)

Demo3