Лучший способ сохранить связанные с пользователем данные из базы данных в веб-приложении с аутентификацией OIDC

#model-view-controller #asp.net-identity #openid-connect #azure-ad-&raph-api #asp.net-core-3.1

#model-view-controller #asp.net-identity #OpenID-connect #azure-ad-&raph-api #asp.net-core-3.1

Вопрос:

У меня есть веб-приложение Core3.1, защищенное AzureAD (OpenIdConnect), и я извлекаю большую часть необходимых мне данных пользователя из idtoken: имя пользователя, электронная почта, идентификатор сотрудника, даже группы объявлений пользователя. Мне также нужно получить некоторые дополнительные данные из базы данных, и я не уверен, как мне следует хранить эти данные в приложении, чтобы сделать их доступными везде и на все время входа пользователя в систему.

Я не хочу использовать cookie. На данный момент я использовал сеанс. Проблема в том, что срок действия этого сеанса отличается от срока действия сеанса аутентификации, поэтому мне пришлось вызвать статический метод, чтобы проверить, пусты ли переменные, и в конечном итоге выполнить запрос снова. Это работает… но это некрасиво.

Я чувствую, что должен обрабатывать вещи по-другому, но я не знаю как.

Комментарии:

1. Вы можете использовать .net core 3.1 в кэше памяти

2. Разве кэш памяти не является общим для всех пользователей?!

3. кэш памяти будет обслуживаться для каждого пользователя, но доступ к вашему user_object возможен только по ключу (например, идентификатору пользователя, токену, электронной почте, имени пользователя и т.д.) Только для этого пользователя

4. Извините, я вас не понимаю. У вас есть пример? Я не могу найти ничего связанного.

5. Вы можете проверить это learn.microsoft.com/en-us/aspnet/core/performance/cachin& /…

Ответ №1:

Решение на основе утверждений может работать лучше всего здесь, где вы:

  1. Определите объект утверждений в вашем API
  2. Заполните его, когда ваш API впервые получит токен доступа
  3. Кэшируйте объект claims для последующих запросов с тем же токеном доступа
  4. Этот кэш всегда будет синхронизирован с сеансом пользователя

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

Комментарии:

1. Я прочитал статью, но она не кажется мне уместной.

2. Нет проблем — ключевые моменты заключаются в том, что часто бывает трудно поместить нужные вам утверждения в токены, а сопоставление токена с собственными пользовательскими данными вашего API может быть затруднено. Возможно, вы сможете предложить альтернативное решение, отвечающее тем же целям..