2017-02-17 31 views
0

Я использую MVC5 на некоторых серверах IIS на Amazon EC2, за балансировкой балансировки нагрузки Amazon. Серверы IIS используют только протокол HTTP, а ELB преобразуется в HTTPS.Перенаправление MVC HTTPS, когда за балансиром нагрузки

Сервер IIS не знает, имеет ли пользователь доступ к HTTPS, поэтому у меня есть правило перезаписи, проверяющее заголовок «X-Forwarded-Proto» для перенаправления пользователя на HTTPS.

К сожалению, когда требуется вход в систему, MVC/IIS перенаправляет пользователя на страницу входа в HTTP.

Если я проверить свой веб-сайт в качестве инструмента, как http://www.redirect-checker.org/ я получаю эти типы результатов:

http://example.com/

301 Moved Постоянно (мой URL правила перезаписи)

https://example.com/

302 Найдено (требуется переадресация -> почему для HTTP?)

http://example.com/Account/Logon?ReturnUrl=%2F

301 Moved постоянно (опять мой URL правила перезаписи)

https://example.com/Account/Logon?ReturnUrl=%2F

200 OK

Я пропускаю что-то?

Могу ли я настроить логин-перенаправление для сохранения протокола, исключая одну из этих переадресаций?

Еще лучше, могу ли я как-то предшествовать правилу переадресации на вход и заставить его заставлять HTTPS, чтобы иметь только одну переадресацию?

Большое спасибо!

Приложение: Я проверил, что такие команды, как «RedirectToAction» отправить адрес как «/ index2», а не весь «http://example.com/Index2». Это нормально, поэтому он поддерживает протокол пользователя.

ответ

0

Предполагая, что вы используете ASP.NET форм проверки подлинности, смотрите в вашем web.config для вашей конфигурации Authentication и добавить requireSsl="true" к <forms> элемента, как показано ниже:

<authentication mode="Forms"> 
     <forms loginUrl="~/Account/LogOn" timeout="2880" requireSSL="true" /> 
</authentication> 
+0

На самом деле я использую AspNet.Identity v2.2.1. Кажется, это так, но я не смог найти эквивалент requireSSL. – TNT

+1

Возможно, стоит посмотреть на этот вопрос: http://stackoverflow.com/questions/30615017/asp-net-identity-login-redirect-enforce-protocol-https –