Перенаправление с параметрами QueryString HTML кодирует разделитель QueryString - PullRequest
0 голосов
/ 05 февраля 2019

На стороне клиента (большое предприятие) у нас есть много приложений, которые проходят проверку подлинности у центрального поставщика аутентификации.Здесь происходит много перенаправлений, но они не работают должным образом на Chrome и Firefox.

(Раньше единственная разрешенная версия IE. Теперь разрешено использовать все остальные браузеры. Вот почему эта проблема возникает сейчас.)

  1. Если App1 требуется авторизация
    • /App1/Home/Index
  2. он перенаправляет в службу центральной аутентификации, добавляя URL-адрес возврата и идентификатор приложения в качестве параметров запроса:
    • /AuthService/Auth/Login?ReturnUrl=/App1/Home/Index&AppId=3
  3. Если пользователь находится в сети предприятия, он перенаправляется в службу аутентификации AD:
    • /AdAuthService/Autologin/Login?ReturnUrl=/AuthService/Auth/ReturnFromAdLogin&prev=/App1/Home/Index
  4. После успешной аутентификации онследует перейти к
    • /AuthService/Auth/ReturnFromAdLogin?ReturnUrl=/App1/Home/Index
  5. , а затем вернуться к
    • /App1/Home/Index

Все перенаправления выполняются с помощью RedirectResult в действиях контроллера.

Проводная вещь заключается в том, что все работает во всех браузерах до шага 3. Во всех браузерах, кроме IE, строка запроса шага 3выглядит следующим образом:

?ReturnUrl=/AuthService/Auth/ReturnFromAdLogin&prev=/App1/Home/Index

Разделитель строки запроса получает кодировку HTML и изменяется с & на &.В результате параметр prev не может быть прочитан, и пользователь никогда не будет перенаправлен на первоначально запрошенную страницу.

Он не меняет разделитель на шаге 2. Почему?Есть идеи?

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