Аутентификация из одного сервиса на другом

Рейтинг: 0Ответов: 1Опубликовано: 15.05.2023

Всем привет. Имеется 2 сервиса: -Рабочий сервис на C# MVC (с горой функций и авторизацией по IP) -И сервис с отчетами C# + Vue (Вход по логину и паролю посредством JWT)

Проблема: Возникла необходимость добавить сервис с отчетами в общий рабочий сервис. Бэк для сервиса остается один, веб морда же физически копируется в рабочий сервис. Запросы с основного сервиса будут проксироваться в сервис с отчетами. (Получается что у меня будет 2 веба и 1 бэк для сервиса отчетов)

Но есть проблема в авторизации. Нужно сделать так, что если пользователь авторизован в Рабочем сервисе (а он там в любом случае автоизован, если смог войти, иначе его выкинет с сообщением, что IP не зарегистрирован), то при переходе в отчеты из него нужно, чтобы не было запроса на авторизацию. И также надо сохранить в сервисе отчетов авторизацию, чтобы ее нужно было проходить при переходе по прямой ссылке.

Ответы

▲ 0

Описание немного путаное - понять бы где дело происходит: внутренняя сеть, один сервер, разные, OIDC-server под вашим контролем или облачный. Если я правильно понял вашу проблему (исхожу из того что инфраструктура всех сервисов независимая, OIDC - черный ящик) то:

  1. добавьте на "Рабочем сервисе" аутентифицирующий proxy. Т.е. зарегистрировать в OIDC клиента и для основного сервиса, разрешить ему доступ в тот же API в который ходит Vue-UI. В приложении сделать proxy-endpoint который будет получать oidc токен и проксировать запрос с токеном в reports backend.

  2. Копипастный frontend-app (Vue) сконфигурировать чтобы смотрел на proxy-api MainService

Т.е. в итоге должно получиться примерно так Диаграмма

П.С. авторизация по IP это, конечно, небезопасно