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

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

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

13 ответов

34 просмотра

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

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 подключить

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта