Недавно у меня возникла небольшая проблема с сайтом на AppHarbor, о которой я писал на их форумах поддержки: Request.IsSecureConnection всегда возвращает false
Короче говоря, потому что балансировщик нагрузкидешифрует трафик HTTPS до того, как он попадет в веб-приложение, такие атрибуты, как Request.IsSecureConnection
, и конфигурация, такая как requireSSL
, при аутентификации форм не работает должным образом.На самом деле в последнем случае вы даже не можете аутентифицироваться, так как приложение думает, что запрос не приходит по HTTPS.
Это аутентификация форм, что особенно проблематично, потому что без него куки не установлены на«безопасные» и отправляются обратно по HTTP, если сайт доступен только по имени домена и неявно обслуживает небезопасную схему URL.
Какой наилучший обходной путь для этого?Я бы предпочел использовать собственную конфигурацию безопасности. Может ли кто-нибудь найти способ переопределить реализацию, которая проверяет, является ли соединение безопасным?Достаточно просто определить, обслуживался ли запрос по HTTPS (либо на основе Request.Url.Scheme
, либо на заголовке X_FORWARDED_FOR
), это просто вопрос аккуратной привязки.