Skip to content

rs90a/xsolla-backend-card

Repository files navigation

Описание

Xsolla Summer School 2020 BE. Тестовое задание.

Приложение представляет собой сервис платежной системы, которая имитирует процесс оплаты банковской картой.

Что реализовано

  • API-метод для создания новой сессии (принимает сумму и назначение платежа, возвращает идентификатор платёжной сессии (sessionId))
  • API-метод для выполнения платежа (принимает данные карты (номер, CVV/CVC, дата истечения действия) и sessionId, возвращает сообщение о результате выполнения платежа)
  • Проверка номера карты по алгоритму Луна (упрощенному)
  • Ограничение времени жизни платежной сессии
  • JWT-авторизация
  • Защита от перехвата JWT

Требования

  • .NET Core 3.1

Запуск

В папке с проектом выполнить команды: dotnet restore, dotnet run. Приложение будет запущено по адресу https://localhost:5001/.

API

Доступные пользователи (логин, пароль):

Описание защиты JWT

Защита заключается в добавлении пользовательского контекста в JWT и Cookie.

Пользовательский контекст имеет вид: {логин пользователя}.{кол-во миллисекунд с 01.01.1970}.{GUID}.

При получение токена, в JWT добавляется пользовательский контекст в хешированном виде (алгоритм SHA1), а в Cookie устанавливается значение в исходном виде. Далее при обращении к API-методам, срабатывает Middleware-прослойка, которая выполняет дополнительную валидацию пользователя: выполняется получение пользовательского контекста из Cookie и JWT. Для значения контекста из Cookie вычисляется хеш, который сравнивается со значением из JWT. Если токен будет перехвачен, то запросы к API не пройдут, так не задано значение контекста в Cookie, а восстановить это значение не получится.

About

Xsolla BE 2020. Тестовое задание.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published