Шлюз приложений Azure, служба приложений Azure и проверка подлинности на основе форм - PullRequest
0 голосов
/ 23 октября 2018

Я перевожу полную инфраструктуру в Azure;это продвигалось медленно, так как нужно было многому научиться, и на каждые два шага вперед, кажется, был один шаг назад.

После того, что кажется вечностью, я думаю, что все отсортировано с одним исключением.

Архитектура выглядит следующим образом: Диспетчер трафика Azure ==> 2 шлюза приложений Azure (с географическим разделением) ==> Служба приложений Azure

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

Само приложение является приложением ASP.NET MVC и использует проверку подлинности на основе форм;и здесь возникает проблема.

При переходе на публичный адрес: client.domain.com и посещении веб-сайта он определяет, что пользователь не прошел проверку подлинности, и отправляет браузер на страницу входа ...пока все хорошо, но вместо того, чтобы использовать client.domain.com/login, он использует имя DNS веб-сервера, поэтому client.azurewebsites.com/login

Как мне изменить поведение так, чтобы оноиспользует внешнее DNS-имя, а не имя веб-сайта?

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

Могу ли я выполнить настройку веб-конфигурации?Я смотрю на исходящие правила перезаписи, но, похоже, они работают только с тегами, а не с перенаправлениями 302.

Любые мысли будут приветствоваться.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Чтобы решить эту проблему, мне пришлось изменить код самого веб-приложения.Не идеально, но это сработало.

Мне нужно было расширить код, который перенаправляет неаутентифицированный запрос на страницу входа в систему, обнаружив HTTP-заголовок X-Original-Host, который пересылает шлюз приложений.Содержит публичное DNS-имя.Если заголовок присутствует и он находится в предварительно одобренном белом списке (чтобы предотвратить любой захват), то перенаправьте пользователя на страницу входа для этого домена, а не на страницу, которую сервер прослушивает напрямую (поэтому используйтеclient.domain.com, а не client.azurewebsites.com)

0 голосов
/ 23 октября 2018

Вам необходимо настроить пользовательские имена DNS в своем веб-приложении (вы можете использовать TXT-запись для проверки имени DNS, поэтому я не вижу причины, по которой вы можете добавить его в веб-приложение).или вы можете изменить код.

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