Обратный прокси-сервер Blazor Server с аутентификацией - PullRequest
0 голосов
/ 06 мая 2020

У меня есть серверное приложение Blazor (netcore 3), которое использует аутентификацию через OpenID / Okta.

Я начал тестировать его через IIS, и запуск в качестве обычного веб-сайта работал нормально.

Но мне нужно запустить его через обратный прокси-сервер из-за остальной части нашей настройки, и после того, как я установил это, сайт Blazor больше не функционирует.

Наш обратный прокси прост, просто требуется url (https: //subdomain.domain.com) и направляет его внутри (http: // localhost: 8093). Здесь подключены и другие сайты, это был просто пример.

Мне удалось заставить все ресурсы (css, js, изображения) работать правильно, добавив «app.UseForwardedHeaders», но я у меня все еще есть проблема с аутентификацией.

Для аутентификации он настроен с помощью services.AddAuthentcation и AddOpenIdConnect, который запускается MVC вызовом Account / Login, который выдает HttpContext.ChallengeAsyn c .

Запуск приложения в автономном режиме или на его веб-сайте, логин работает и перенаправляет на Okta (https: //oktadevurl.com/oauth2/default/v1/authorize?parameters).

Через обратный прокси-сервер этот URL становится относительно прокси-адреса (https: //subdomain.domain.com/oauth2/default/v1/authorize?parameters), что неверно.

Я дважды проверил заголовки пересылки и настройки OpenId / Okta. Я ищу тех, кто сталкивался с этой проблемой раньше и мог бы указать мне в правильном направлении, как получить абсолютные URL-адреса, работающие от Blazor через обратный прокси.

Спасибо.

1 Ответ

0 голосов
/ 07 мая 2020

Мне удалось решить эту проблему с помощью одного небольшого флажка - ARR:

В диспетчере IIS выберите текущий сервер (а не веб-сайт), откройте маршрутизацию запросов приложений, и в правом столбце будет опция «Настройки прокси-сервера». Там вы увидите опцию «Отменить перезапись хоста в заголовках ответа». Если это отмечено - снимите отметку, и ваша проблема должна быть решена.

...