Тайм-аут сеанса в iFrame при использовании единого входа с IdentityServer 4 - PullRequest
0 голосов
/ 07 мая 2019

Мой сценарий:

App_1 & App_2 - мои веб-приложения MVC. App_1 - это MVC 4.5, App_2 - это MVC.NET Core 2.

Я использую IdentityServer4 для единого входа.

У меня есть страница для входа и проверки подлинности с помощью IdentityServer4

В App_1 я использовал iFrame для встраивания App_2 внутрь. App_1 и App_2 - это один домен, другой поддомен

Теперь я захожу в App_1 через страницу входа в Internet Explorer. После успешного входа в систему UM перенаправляет меня в App_1, и я могу работать с App_1 & App_2 как обычно. Я могу показать содержимое App_2 внутри App_1, работать с функциями App_2 ...

Я также установил время ожидания сеанса для обоих приложений по 6 часов.

Однако, когда я какое-то время работал в App_1 (1-2 часа), App_2 теряет свой сеанс в iFrame и выдает ошибку: « Это содержимое не может отображаться в кадре », как показано ниже фото:

Error

Если я выйду из системы и снова войду в систему, я смогу получить доступ к обоим приложениям в обычном режиме, и через некоторое время App_2 снова закроется, и будет показана та же ошибка.

Есть предложения, что случилось и как решить эту проблему?

1 Ответ

0 голосов
/ 10 мая 2019

Переход к конечной точке authorize в рамках iframe клиентского приложения не поддерживается протоколом из коробки.

Вы можете создать промежуточное программное обеспечение для перезаписи заголовков Content-Security-Policy и / или X-Frame-Options, чтобы разрешить исходные данные вашего клиента.

Если вы не хотите изменять реализацию IDS4, я бы порекомендовал просто выполнить навигацию _top, но это включало бы приложения, встроенные в фреймы, для всплытия инструкции на страницу верхнего уровня, которая подписываеттребуется, например, postMessage().

У нас похожая проблема в нашей настройке, и в этом мире мы когда-либо делаем prompt=none authorize запросов только внутри фреймов.Если возвращается ошибка login_required, мы отправляем сообщение родителю, чтобы запросить запрос prompt=login в верхнем окне.Для этого потребовалось изменить CSP по умолчанию для конечной точки authorize, чтобы всегда разрешать (очень доверяемый) источник хост-приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...