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.
симониды 6
Привет,
Проблема в том, что я не устанавливаю его: он устанавливается автоматически веб-службой.
Мое приложение на 98% похоже на пример приложения, предложенный в справке (Auth0 ASP. NET Core MVC SDK Quickstarts: Login), но чтобы быть уверенным, что я не делаю ничего плохого, я просто отправляю вам в личном сообщении мой код.
Как вы увидите, я никогда не устанавливал URL-адрес перенаправления, и поэтому понятия не имею, как это сделать, чтобы решить мою проблему.
Спасибо за помощь.
дан.вода 7
Хм, хороший вопрос. У меня мало опыта работы с .NET core. Позвольте мне связаться с командой и получить ответ для вас.
симониды 8
Спасибо за ответ, жду остальные команды
dan.woda 9
Вот ответ одного из наших инженеров:
Этот URL-адрес перенаправления создается библиотекой Microsoft.AspNetCore.Authentication.OpenIdConnect, используемой в приложениях .NET. Обычно вы хотите, чтобы URL-адрес перенаправления находился в том же домене, что и приложение.
Однако, если проблема заключается в том, что приложение не знает о домене, поскольку запрос поступает через балансировщик нагрузки и т. д., им может потребоваться использовать заголовки x-forwarded-for nginx — URL-адрес обратного вызова AspNetCore Azure AD Connect — http, а не https — Qaru QaruSite
симониды 10
Спасибо вам и вашей команде за ответ.
В настоящее время я проверяю предоставленные вами ссылки и вернусь, чтобы сообщить, удалось ли мне решить мою проблему.
1 Нравится
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.
Что касается правил, то у меня сейчас вообще нет исходящих правил. Для входящих правил у меня есть (для каждого из моих сайтов):
- Правило перенаправления с HTTP на HTTPS.
- Правило перезаписи, которое берет URL-адреса и перезаписывает URL-адрес в http://127.0.0.1:port, чтобы самостоятельные службы могли соответствующим образом обработать запрос. Для каждого сайта действует индивидуальное правило.
На данный момент я очень озадачен, потому что я не вижу другого способа, которым перенаправления не вели бы к фактическому URL-адресу, который я предоставляю, но IIS, кажется, делает что-то таинственное.
Дополнительная информация
- Приходит запрос для www.example.net/Documents.
- Правило переписывает URL-адрес на 127.0.0.1:port/Documents на основе входящего URL-адреса.
- Конечная точка обрабатывает запрос.
- Отправлен ответ перенаправления.
- Базовый URL-адрес преобразуется обратно в www.example.com несмотря ни на что, даже если перенаправление осуществляется на другой домен. Я считаю, что проблема именно в этом. Похоже, что IIS делает это по умолчанию. Однако я не уверен.
- перенаправление
- переписать
- asp.net
- iis-8
Нашел ответ и хотел опубликовать здесь, если кто-то еще столкнется с проблемой.
По https://stackoverflow.com/a/23600821/132528:
Может ли быть задействована маршрутизация запросов приложений? Посмотрите на IIS -> Компьютер или сайт -> Кэш маршрутизации запросов приложений -> Настройки прокси-сервера и снимите флажок «Обратно перезаписать хост в заголовках ответов». Если вы сделаете это на уровне машины, это повлияет на все сайты. Если вы сделаете это на определенном сайте, это повлияет только на этот сайт, а на другие сайты в коробке это не повлияет.