Моя производственная установка выглядит следующим образом:
- M1 - Сайт ASP.NET
- M2 - URL-адрес URL-адреса IIS 2.0 + ARR 3.0
Используя URL-адрес пересылки IIS, любой запрос на M2, скажем, http:// m2/app/login.aspx будет перенаправлен на M1, поскольку http:// m1/app/login.aspx.
В M1 на веб-сайте ASP.NET Open Auth реализована внешняя аутентификация Google. Когда пользователь нажимает кнопку Google, браузер будет перенаправлен на страницу входа в систему Google, чтобы пользователь мог аутентифицироваться.
Но когда веб-сайт доступен из M2, URL перенаправления, сгенерированный .net oAuth (https:// accounts.google.com/[строка запроса]) для перенаправления на Google, является заменяется URL-адресом Rewrite как http:// m2/[строка запроса].
Так просто быть ясным; когда запрос выполняется для аутентификации через поставщика внешней проверки подлинности, возвращается 302 перенаправление. Часто форма этого может выглядеть так:
Заголовки ответов:
...
Местоположение: https:// accounts.google.com/o/oauth2/auth? big_long_query_string
...
Этот перенаправление создается сервером (M1), который находится за прокси-сервером (M2-IIS URL Rewrite 2.0 + ARR 3.0). Поэтому перезаписывающий сервер перезаписывает заголовок Location:
Заголовки ответов:
...
Местоположение: http:// M1/o/oauth2/auth? big_long_query_string
...
Нам нужно правило, которое не переписывает URL-адрес местоположения при перенаправлении. Он может ориентироваться только на определенные переадресации. В большинстве случаев поведение, упомянутое здесь, требуется, поскольку все перенаправления перенаправляются на основной прокси-сервер. Может ли кто-нибудь предложить решение или обходное решение для определенных переадресаций?