169 похожих чатов

Подскажите, у меня есть кейклок, фронт(клиент) через него аутентифицируется(там oidc

с pkce), бэк - resource server, но на бэке у меня есть сущности в разных микросервисах, которые сохраняют userId(например, автора поста), но на фронт мне нужно отдать не userId, а username(или что-либо другое из того, что доступно о пользователе в кейклоке). Мне сказали, что самый правильный вариант - хранить маппинг пользователей в базе каждого сервиса, т.е. я из токена беру все, что нужно(либо по /userinfo), и кладу в базу. Но мне не нравится, что у меня в каждом сервисе будет одинаковая табличка с юзерами. Может как-то можно это решить лучше?

13 ответов

37 просмотров

Заведи сервис пользователей и храни там

Evg-Resh Автор вопроса
Alexandr ∨∧‾ Emelyanov
Заведи сервис пользователей и храни там

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

Evg Resh
Тогда нужно будет на каждый запрос, идти проверять...

С обновлением то понятно как раз - события в какую либо шину, да и какое обновление, если звания только ид Ну и тут как бы две крайности, ты либо все дублируешь, либо ходишь куда то за данными

в чем проблема в токене userId и userName передавать?

Evg-Resh Автор вопроса
Evg-Resh Автор вопроса

В этом как раз проблемы нет(как и сходить на /userinfo), только польза-то какая, я из базы достану лист сущностей с id'шниками, от одного токена мне пользы не будет, надо где-то хранить их

Evg Resh
В этом как раз проблемы нет(как и сходить на /user...

Если тебе нужны списочные запросы выполнять, то да, либо в этом сервисе делаешь сущность с user_info (особенно полезно, если на этом сервисе сохраняются специфичные данные, которые не нужны для других сервисов), либо учишь его бегать за доп. инфой в kk или отдельный сервис пользователей

Evg Resh
На каждый логин слать событие в шину?

Можно научить КК каждое изменение инфы пользователя кидать в кафку (для примера), твои другие сервисы слушают и обновляют у себя инфу о пользователях это очень частый кейс

Evg-Resh Автор вопроса
Alexey Khvatov
Можно научить КК каждое изменение инфы пользовател...

Да, видимо, только так, спасибо. Я просто хочу быть наиболее абстрагированным от IdentityProvider и тем более не хочу, чтоб моим сервисам нужны были админские права(Чтоб за юзерами по api ходить в кейклок)

Evg Resh
Да, видимо, только так, спасибо. Я просто хочу быт...

keycloak kafka spi Тогда как-нибудь так должна гуглиться доп. инфа

Evg Resh
На каждый логин слать событие в шину?

Зачем на каждый? У тебя каждый логин меняются данные пользователя?

Evg Resh
В этом как раз проблемы нет(как и сходить на /user...

Тогда хранить тут на месте. Либо сделать шаренный кеш мешок сервисами

Evg-Resh Автор вопроса
Alexandr ∨∧‾ Emelyanov
Зачем на каждый? У тебя каждый логин меняются данн...

Ну я-то не знаю, когда они поменяются, но тут человек подсказал kafka spi подключить

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта