Передача информации о пользователе через микросервисы

По сути, у меня есть микросервис A, который проверяет пользователя, проверяя учетные данные, и ему необходимо перенаправить запрос пользователя на другой микросервис, который выполняет дальнейшую обработку запроса. Мы используем аутентификацию на основе сеанса. После того, как запрос был получен в микросервисе B, ему необходимо сохранить запись пользователя, инициировавшего запрос. Эти микросервисы взаимодействуют друг с другом с помощью RSocket. Теперь, если мне нужно передать информацию о зарегистрированном пользователе в микросервис B, я могу либо отправить его как часть запроса, либо создать токен JWT и передать токен вместе с запросом. Токен может быть проверен в службе B для авторизации и получения сведений о пользователе. Какой будет лучший подход? Подскажите, пожалуйста, есть ли другой способ сделать это лучше?


person mAvericK    schedule 12.12.2019    source источник


Ответы (1)


Я бы предложил отправлять пользовательские данные в метданных RSocket. Когда дело доходит до этого, у вас есть несколько вариантов:

  1. Поскольку RSocket ориентирован на соединение, если весь трафик от одной службы к другой должен был выполняться одним и тем же пользователем, вы могли бы один раз отправить пользовательские данные с толчком метаданных в потоке 0 во время соединения.

  2. Если разные запросы предназначены для разных пользователей, вы можете отправлять данные пользователя в метаданных запроса RSocket с каждым запросом.

Метаданные можно закодировать любым удобным для вас способом. Вы можете поместить туда токен JWT, если хотите, но это не обязательно должен быть JWT. Вы можете так же легко создать свой собственный объект для отправки данных.

person gregwhitaker    schedule 16.12.2019