ASP.NET Core неверный URL-адрес перенаправления

simonids 1

Здравствуйте.

Я использую auth0 для подключения к моему приложению.
Он хорошо работает локально, но когда я пытаюсь использовать его из Интернета, у меня возникает проблема.

Я использую пример ASP.Net Core, представленный в документации (Auth0 ASP.NET Core MVC SDK Quickstarts: Login), и я правильно настроил вход, выход и URL-адрес обратного вызова в auth0.
Моя проблема заключается в том, что когда я обращаюсь к моему сервису по общедоступному адресу и нажимаю кнопку «Войти», URL-адрес, созданный сервисом для вызова auth0.com, указывает локальный адрес в разделе «redirect_uri», а не общедоступный.
Конечно, это не сработало, потому что локальный адрес недоступен глобально…

Мой вопрос: где и как я могу указать правильный URL-адрес для использования в службе?

Любая помощь приветствуется, спасибо!

дан. вода 3

Привет @simonids,

Можете ли вы привести пример такого поведения? Скриншоты могут быть полезны.

симониды 4

Привет,

Прежде всего, спасибо за ответ.

Вот скриншот моего сервиса на примере из документации auth0. Он работает на сервере IIS и доступен из общедоступного доменного имени (которое я перезаписываю здесь из соображений конфиденциальности).

Скриншот 1077×221 36,4 КБ

Проблема в том, что когда вы используете кнопку «Вход/Подключение», URL-адрес, который создается автоматически, выглядит следующим образом: https://XYZ.auth0.com/authorize?client_id=MY_CLIENT_ID&redirect_uri=https% 3A%2F%2F**MY_LOCAL_IP_ADDRESS_AND_PORT**%2Fcallback&…
И мне нужно, чтобы это было так, чтобы все было в порядке: https://XYZ. auth0.com/authorize?client_id=MY_CLIENT_ID&redirect_uri=https%3A%2F%2F* *MY_PUBLIC_DOMAIN_NAME.com**%2Fcallback&…

Спасибо.

дан.вода 5

Как вы устанавливаете свой URI перенаправления? Это должен быть параметр, который вы отправляете вместе со своим запросом на конечную точку /authorize, и его можно настроить так, как вы предпочитаете.

Может помочь демонстрация примера кода вашей реализации Auth0.

симониды

4 июня 2021 г., 6:52 6

Привет,

Проблема в том, что я не устанавливаю его: он устанавливается автоматически веб-службой.
Мое приложение на 98% похоже на пример приложения, предложенный в справке (Auth0 ASP. NET Core MVC SDK Quickstarts: Login), но чтобы быть уверенным, что я не делаю ничего плохого, я просто отправляю вам в личном сообщении мой код.
Как вы увидите, я никогда не устанавливал URL-адрес перенаправления, и поэтому понятия не имею, как это сделать, чтобы решить мою проблему.

Спасибо за помощь.

дан.вода 7

Хм, хороший вопрос. У меня мало опыта работы с .NET core. Позвольте мне связаться с командой и получить ответ для вас.

симониды 8

Спасибо за ответ, жду остальные команды

dan.woda

, 15:28 9

Вот ответ одного из наших инженеров:

Этот URL-адрес перенаправления создается библиотекой Microsoft.AspNetCore.Authentication.OpenIdConnect, используемой в приложениях .NET. Обычно вы хотите, чтобы URL-адрес перенаправления находился в том же домене, что и приложение.
Однако, если проблема заключается в том, что приложение не знает о домене, поскольку запрос поступает через балансировщик нагрузки и т. д., им может потребоваться использовать заголовки x-forwarded-for nginx — URL-адрес обратного вызова AspNetCore Azure AD Connect — http, а не https — Qaru QaruSite

симониды 10

Спасибо вам и вашей команде за ответ.
В настоящее время я проверяю предоставленные вами ссылки и вернусь, чтобы сообщить, удалось ли мне решить мою проблему.

1 Нравится

10 июня 2021 г., 13:40 11

Проблема решена!
На самом деле проблема была не в веб-сервисе, а в неправильной конфигурации IIS… Я нашел решение благодаря ссылкам, которые вы мне прислали, большое спасибо.

дан.вода 12

Отлично, спасибо за обновление! Я собираюсь отметить этот вопрос решенным ссылками для будущих пользователей.

система Закрыто 13

Эта тема была автоматически закрыта через 15 дней после последнего ответа. Новые ответы больше не допускаются.

rewrite — Базовый URL-адрес перенаправления ASP перезаписывается IIS

Задавать вопрос

спросил

Изменено 4 года, 1 месяц назад

Просмотрено 2к раз

Я пытаюсь отладить, как мне кажется, проблему перезаписи IIS.

Я размещаю несколько сайтов на одном сервере IIS, который действует как прокси-сервер для хостов Kestrel за кулисами. Это все работает правильно, и у меня не было никаких проблем.

Проблема, с которой я сталкиваюсь, заключается в том, что когда любой из моих сайтов выполняет возврат Redirect("http://www.someotherurl.com/") через ASP.NET MVC, базовый URL-адрес всегда перезаписывается в URL-адрес мой сайт — это верно, даже если URL-адрес полностью является внешним по отношению к моему URL-адресу.

Если я запускаю сайт отдельно, а не через прокси-сервер IIS, перенаправление работает так, как я ожидаю, поэтому я знаю, что это что-то внутри IIS.

Что касается правил, то у меня сейчас вообще нет исходящих правил. Для входящих правил у меня есть (для каждого из моих сайтов):

  1. Правило перенаправления с HTTP на HTTPS.
  2. Правило перезаписи, которое берет URL-адреса и перезаписывает URL-адрес в http://127.0.0.1:port, чтобы самостоятельные службы могли соответствующим образом обработать запрос. Для каждого сайта действует индивидуальное правило.

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

Дополнительная информация

  1. Приходит запрос для www.example.net/Documents.
  2. Правило переписывает URL-адрес на 127.0.0.1:port/Documents на основе входящего URL-адреса.
  3. Конечная точка обрабатывает запрос.
  4. Отправлен ответ перенаправления.
  5. Базовый URL-адрес преобразуется обратно в www.example.com несмотря ни на что, даже если перенаправление осуществляется на другой домен. Я считаю, что проблема именно в этом. Похоже, что IIS делает это по умолчанию. Однако я не уверен.
  • перенаправление
  • переписать
  • asp.net
  • iis-8

Нашел ответ и хотел опубликовать здесь, если кто-то еще столкнется с проблемой.

По https://stackoverflow.com/a/23600821/132528:

Может ли быть задействована маршрутизация запросов приложений? Посмотрите на IIS -> Компьютер или сайт -> Кэш маршрутизации запросов приложений -> Настройки прокси-сервера и снимите флажок «Обратно перезаписать хост в заголовках ответов». Если вы сделаете это на уровне машины, это повлияет на все сайты. Если вы сделаете это на определенном сайте, это повлияет только на этот сайт, а на другие сайты в коробке это не повлияет.