Мы используем IdentityServer3 в качестве нашего централизованного поставщика проверки подлинности. Теперь у меня есть общий вопрос об IdenityServer в корпоративной среде. Я попытаюсь объяснить это в следующем примере:IdenityServer в корпоративной среде - разрешение информации пользователя в нескольких базах данных
- Если пользователь был успешно аутентифицирован, он получает токен у поставщика. Маркер включает уникальный идентификатор пользователя.
- Аутентифицированный пользователь отправляет запрос в WebApi для создания нового элемента (например, нового продукта).
- WebApi извлекает уникальный идентификатор из токена и создает новый продукт в базе данных. Кроме того, новый продукт был связан с уникальным идентификатором пользователя (например, как createUserId).
- Другой пользователь отправляет запрос в WebApi для получения всех доступных продуктов.
- WebApi создает запрос базы данных для извлечения всех продуктов. Кроме того, WebApi хочет преобразовать creationUserId каждого продукта в коррелирующее имя пользователя. Но это невозможно, потому что имя пользователя хранится в базе данных идентификации, которая является другой базой данных, чем база данных приложений (например, для продуктов). Есть ли какая-то передовая практика для решения этого требования?
Большое спасибо за вашу помощь!
С уважением
Один из способов, о котором я могу думать, - добавить имя пользователя как одно из требований, которое будет частью id_token. В web api вы получите эту претензию, которая может быть использована для извлечения имени пользователя и использования его по своему усмотрению. –
Вам понадобится служба для перевода этих идентификаторов на имена пользователей. Эта служба может быть центральной, или ваш api может иметь кэш, загруженный из службы. Другой подход может заключаться в том, что при сохранении идентификатора вы также можете поместить имя из токена, но имена курсоров могут измениться. –