#asp.net-core #identityserver4 #identityserver3
#asp.net-ядро #identityserver4 #identityserver3
Вопрос:
Мы используем IdentityServer для аутентификации в нашем продукте SaaS, у которого много клиентов, и наши пользователи могут иметь доступ к нескольким клиентам. Мы используем oidc-client из интерфейса VueJS для авторизации с помощью IdentityServer, а затем вызываем aspnet webapis.
В настоящее время у нас есть пользовательский IProfileService, который увеличивает утверждения (например, идентификатор арендатора) на основе acr_value, переданного во время аутентификации.
Проблема: если пользователь открывает наше приложение на двух разных вкладках браузера с разными арендаторами, поток обновления токена будет прерываться (в основном привязывается к последнему арендатору, на который переключился пользователь).
Я думаю, это связано с тем, что он рассматривает каждую комбинацию пользователей / арендаторов как отдельного пользователя, а IdentityServer поддерживает только одного пользователя за сеанс (и сеанс разделяется между вкладками браузера)?
Кто-нибудь может подтвердить? Является ли мой единственный вариант сделать токен не зависящим от арендатора? Или есть разумные способы добиться этого?
Комментарии:
1. Вы используете IdSrv 3 или 4, пожалуйста, используйте правильные теги.
2. Что касается вашего фактического вопроса: похоже, что вы либо используете файлы cookie (и они используются совместно в браузере), либо localstorage / sessionstorage из пользовательского интерфейса для хранения токена. Если что-то из этого верно, что ж, в этом проблема, вы делитесь токеном, и в какой-то момент один выживет, а другой умрет
3. Есть ли альтернативный вариант, который изолирует вкладки друг от друга??
4. @AndyV Итак, вы хотите, чтобы разные пользователи могли входить в систему на разных вкладках? Если это так, это можно сделать, но реализация зависит от вашего варианта использования, который неясен из вопроса.
5. @AndyV Некоторая соответствующая информация к моему приведенному выше комментарию находится здесь, в моем блоге jayantarimal.com.np /… . Вам просто нужен IDS4 с привязкой к поддомену, чтобы каждый клиент мог вызывать IDS4 со своей собственной соответствующей привязкой к поддомену. Вы добьетесь чего-то подобного streamable.com/z5apun . Обратите внимание, что я использовал отдельный поддомен для каждого арендатора, который в вашем случае не нужен.