Я разрабатываю полномочия единого входа (что-то вроде FB или Google), и другие клиентские приложения будут использовать его для аутентификации пользователя. Я столкнулся со следующей проблемой.
У меня есть 2 клиентских приложения (клиенты Identity Server) - ClientA и ClientB. Теперь один пользователь User1 входит в веб-приложение ClientA. Он вводит имя пользователя и пароль, и выдаются токены для комбинации «пользователь1 / клиент».
Затем Пользователь1 входит в приложение ClientB. Диалога входа в систему нет, и это нормально, поскольку Identity Server использует куки-файлы для распознавания того же сеанса. Конечная точка токена вызывается для выдачи токенов для комбинации User1 / ClientB.
Проблема с выходом из системы. Я выхожу из приложения ClientA, которое отменяет сеанс для этого пользователя (SubjectId) также на Identity Server (путем вызова HttpContext.SignOutAsync ("oidc")).
Теперь, что должно произойти с приложением ClientB? Я нашел несколько запросов по этой проблеме, и большинство людей хотят, чтобы другие приложения тоже выходили из системы (используя фронтальный или обратный канал), но я хочу, чтобы другие приложения продолжали работать как вошедшие в систему. С моей точки зрения, это тот же сценарий, что и при входе в StackOverflow с использованием FB, чем при входе, например, в. Tripadvisor использует FB, и когда вы выходите из одного из этих сайтов, вы все равно будете входить в другие сайты.
В моем случае ClientB все еще функционирует, у него есть действительные токены и он может вызывать внутренние API. Но когда я инициирую такой же выход из ClientB, то Identity Server это не устраивает, так как он не может найти этот SubjectId:
Обработка запроса на выход для анонимного ...
Ошибка завершения запроса на сеанс: ошибка при проверке подсказки токена id ...
Почему сервер идентификации рассматривает эти 2 приложения как один сеанс и удаляет его при выходе из одного приложения? Каков рекомендуемый подход в этом случае?
Спасибо
Peter