На стороне клиента (большое предприятие) у нас есть много приложений, которые проходят проверку подлинности у центрального поставщика аутентификации.Здесь происходит много перенаправлений, но они не работают должным образом на Chrome и Firefox.
(Раньше единственная разрешенная версия IE. Теперь разрешено использовать все остальные браузеры. Вот почему эта проблема возникает сейчас.)
- Если App1 требуется авторизация
- он перенаправляет в службу центральной аутентификации, добавляя URL-адрес возврата и идентификатор приложения в качестве параметров запроса:
/AuthService/Auth/Login?ReturnUrl=/App1/Home/Index&AppId=3
- Если пользователь находится в сети предприятия, он перенаправляется в службу аутентификации AD:
/AdAuthService/Autologin/Login?ReturnUrl=/AuthService/Auth/ReturnFromAdLogin&prev=/App1/Home/Index
- После успешной аутентификации онследует перейти к
/AuthService/Auth/ReturnFromAdLogin?ReturnUrl=/App1/Home/Index
- , а затем вернуться к
Все перенаправления выполняются с помощью RedirectResult
в действиях контроллера.
Проводная вещь заключается в том, что все работает во всех браузерах до шага 3. Во всех браузерах, кроме IE, строка запроса шага 3выглядит следующим образом:
?ReturnUrl=/AuthService/Auth/ReturnFromAdLogin&prev=/App1/Home/Index
Разделитель строки запроса получает кодировку HTML и изменяется с &
на &
.В результате параметр prev
не может быть прочитан, и пользователь никогда не будет перенаправлен на первоначально запрошенную страницу.
Он не меняет разделитель на шаге 2. Почему?Есть идеи?