Identity Server 4 отказался создавать кадр SignOutIframeUrl - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть приложение IdenityServer4 (. net core 2.1) и 2 клиентских mvc приложения (. net framework 452) с использованием промежуточного программного обеспечения UseOpenIdConnectAuthentication. Я использую неявный поток и пытаюсь реализовать Single Log Out через Front-Channel. Я использую приложение Quickstart, и все настроено на работу. Мне просто нужно вернуть LoggedOut.cs html с SignOutIframeUrl, присутствующим в модели.

Моя проблема в том, что, несмотря на то, что выход из системы работает и выходит из меня с обоих клиентов, я получаю следующие ошибки на вкладке сети и на вкладке консоли. network tab error content security policy violation

Я попытался добавить заголовок Content-Security-Policy со всеми видами настроек в нем в атрибуте фильтра действия SecurityHeadersAttribute в IdentityServer, но, похоже, ничего не решает проблему.

Несколько примеров:

var csp = "default-src 'self' 'unsafe-inline' http://localhost:*;"
          "frame-ancestors 'self' http://localhost:*;" +
          "frame-src 'self' http://localhost:*;" +
          "child-src 'self' http://localhost:*;";

var csp = "default-src 'self' *.aspnetcdn.com 'unsafe-inline';" +
          "frame-src 'self' *";

Вот так выглядит мое FrontChannelLogoutUri действие

public void ForceLogOut()
{
    AuthenticationManager.SignOut(CookieAuthenticationDefaults.AuthenticationType);
    AuthenticationManager.SignOut(OpenIdConnectAuthenticationDefaults.AuthenticationType);   
}

Я также пытался добавление заголовка Content-Security-Policy в ответ от ForceLogOut, тоже не сработало.

Мой вопрос: как я могу исправить эту ошибку? Есть кое-что (скорее всего, много вещей), которого я не понимаю, но везде, где я пытался найти информацию о проблеме Refused to frame.. policy directive, люди говорят, что я должен установить соответствующие значения frame-src.

1 Ответ

0 голосов
/ 21 февраля 2020

При наличии нарушения frame-sr c именно CSP внешнего кадра препятствует отображению внутреннего кадра. Если это нарушение предшествующих рамок, то внутренняя рамка не позволяет отображать ее. Поскольку создается впечатление, что вы создаете страницу из IdentityServer, наиболее вероятно, что CSP других приложений должен добавить ваш источник IdentityServer в frame-sr c.

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