Интересно поговорить об авторизации/аутентификации в микросервисах.
Допустим, есть микросервисы:
app1.domain.com,
app2.domain.com, app*.
domain.com.
Все находятся в одной доменной зоне. Какие ваши мысли по поводу глобальной аутентификации/авторизации?
Я пока думаю между двумя вариантами:
1) сделать отдельный
login.domain.com с формой входа/регистрации. При успешной регистрации сетапим httpOnly куки на всю доменную зону .domain.com с обычной сессией, сессию кладем в какую-нибудь редис, ну и дальше каждый микросервис будет в своей мидлваре на каждый запрос проверять куку, дергать login сервер чтобы получить юзера по кукам и всю нутрянку сессии, ну и дальше уже работать с этим. Минус - большая нагрузка на login сервер (прототип этого подхода педалю на golang)
2) JWT access/refresh токены. Смотрел цикл видео от
@xanf_ua (спасибо за труд!). Но, думаю, на сколько это применимо ко мне: каждый микросервис имеет свой фронтенд, и мне access/refresh токены как минимум надо тоже в куках сетапить, но так как почти все микросервисы - SPA, мне нужно будет вручную на фронтенде делать рефреш через соответствующий мини-бекенд конкретного микросервиса, который в свою очередь будет запрашивать рефреш у логин сервера, что, получается, немного оверхед над теми же сессиями. Плюс лишь в том, что рефреш надо делать реже, а соответственно снимаю львиную нагрузку с логин сервера.
3) OpenID и все такое, но это уже больше OAuth2 -like, и немного сложнее заимплементить на каждый сервис.
Склоняюсь скорее к первому, но может кто подскажет лучшую практику в этом направлении))
Спасибо:)