Спроектировать флоу на сайте с платной подпиской

Задание закрыто
Стоимость:5 000 рублей
Срок выполнения:1 день
Варианты оплаты:Планируется использовать Безопасную сделку
Дата публикации:2025-02-11 15:56
Был на сайте:2025-02-12 13:14

Спроектировать флоу на сайте с платной подпиской

 
Задача

Нужна консультация на настройку reverse proxy, балансера и IdP (Authentik), всё это в кубере.


Клиент делает запрос, запрос уходит на реверс прокси, прокси направляет в IdP, если юзера нет, то перенаправляем на страницу регистрации которую предоставляет ИдП, регаемся, ИдП сохраняет пользоватлея у себя в БД.
После юзер пытается получить доступ к платному ресурсу, запрос идёт на прокси, прокси форвардит на IdP, IdP проверяет что юзер зареган и ему надо сделать подписку, и перенаправляет с кодом ошибки(?) на прокси, а прокси в зависимости от кода ошибки перенаправляет на страницу покупки.

Со страницы покупки делаем оплату через сервис платежей и сообщаем IdP что юзер оплатил и всё ок. Со страницы платежа, направляем юзера на главную страницу.

Учитывая вышесказанное, страница регситрации доступна всегда, а страница покупки подписки будет доступна только после прохождения регистрации.

Оставлять заявки могут только авторизованные пользователи.
Stanislav Ricci

Превращаю идеи в цифровое волшебство!

Специализация: IT-технологии и Разработка
  • 5 000 руб1 день
Последовательность флоу
Начало запроса:
Клиент отправляет запрос на сайт. Весь входящий трафик поступает на балансировщик (например, Service типа LoadBalancer в Kubernetes) и далее попадает в Ingress Controller (reverse proxy).

Проверка аутентификации:
Ingress Controller направляет запрос в Authentik для проверки аутентификации (через встроенную функцию forward auth или проксирование запроса).
Если пользователь не зарегистрирован, Authentik перенаправляет его на страницу регистрации, которая всегда доступна.

Регистрация:
На странице регистрации пользователь вводит данные. Authentik создаёт учётную запись и сохраняет её в своей базе данных.

Попытка доступа к платному ресурсу:
При повторном обращении к защищённому ресурсу запрос снова проходит через reverse proxy, который отправляет его в Authentik для проверки.
Если Authentik обнаруживает, что пользователь зарегистрирован, но не имеет активной подписки, он возвращает специальный код (например, 403 или другой код, согласованный в вашей системе).

Редирект на страницу покупки подписки:
Reverse proxy, получив этот код, перенаправляет пользователя на страницу покупки подписки.

Оплата и подтверждение:
На странице покупки пользователь совершает платёж через интегрированный платёжный сервис. После успешной транзакции платёжный сервис уведомляет Authentik (например, через REST API или webhook), что статус подписки изменился на активный.

Доступ к платному контенту:
После обновления статуса подписки Authentik позволяет пользователю получить доступ к защищённому ресурсу. Клиент получает ответ с перенаправлением на главную страницу или непосредственно к контенту.

Примеры моих работ

Немного интерьера
Архитектура решения для сайта с платной подпиской в Kubernetes

Компоненты системы:
1. Reverse Proxy (например, Nginx или Traefik) — точка входа для клиентских запросов.
2. Ingress Controller (Kubernetes Ingress) — балансировщик нагрузки, управляющий трафиком внутри кластера.
3. IdP (Authentik) — сервис аутентификации и авторизации.
4. Платежный сервис (интеграция с внешним провайдером, например, Stripe или PayPal).
5. Сервис платного контента — защищенный ресурс, требующий подписки.
6. База данных — хранилище пользователей и их подписок (может быть частью IdP).

Пошаговый поток работы

1. Настройка инфраструктуры в Kubernetes:
- Reverse Proxy и Ingress:
- Развертывание Ingress Controller (например, Nginx Ingress или Traefik).
- Конфигурация правил маршрутизации в Ingress для:
- `/login`, `/register` -> IdP (Authentik).
- `/payment` -> Платежный сервис.
- `/protected-resource` -> Сервис платного контента (только для авторизованных пользователей с подпиской).
- Настройка TLS для HTTPS.

- IdP (Authentik):
- Развертывание Authentik в Kubernetes (Helm-чарт или манифесты).
- Интеграция с базой данных (PostgreSQL/MySQL) для хранения пользователей.
- Настройка OAuth2/OpenID Connect для аутентификации.

2. Регистрация и аутентификация:
1. Клиент запрашивает защищенный ресурс (`GET /protected-resource`).
2. Reverse Proxy перехватывает запрос и проверяет аутентификацию через IdP.
3. IdP:
- Если пользователь не аутентифицирован:
- Возвращает HTTP 401/Redirect на `/login`.
- Клиент перенаправляется на страницу регистрации/входа IdP (`/login`).
- После успешной регистрации/входа:
- IdP сохраняет пользователя в своей БД.
- Генерирует JWT-токен и устанавливает его в cookie.

3. Доступ к платному контенту:
1. Клиент повторно запрашивает `/protected-resource` (с токеном в cookie).
2. Reverse Proxy передает токен в IdP для проверки:

Продолжение следует...
ТГ. @KuzyaevMaxim
Здравствуйте!
Проанализировав диаграмму и требования, предлагаю следующее решение:
Компоненты системы:

Reverse Proxy (например, Nginx Ingress Controller в Kubernetes)
IdP Authentik для управления аутентификацией
Платежный сервис
Балансировщик нагрузки
Микросервисы в Kubernetes
  • 5 000 руб1 день
Готов помочь.
Телеграмм для связи: https://t.me/viktordev93

Оставлять заявки могут только авторизованные пользователи.