Recentemente ho avuto un po 'di un problema con un sito su AppHarbor che ho scritto sul loro forum di supporto: Request.IsSecureConnection always returns falseContrassegnare cookie come "sicuro" in forme auth quando il sito è un servizio di bilanciamento del carico che serve il CERT TLS
In breve, poiché il bilanciamento del carico decrittografa il traffico HTTPS prima che raggiunga l'app Web, attributi come Request.IsSecureConnection
e la configurazione come requireSSL
su auth di moduli non si comportano come previsto. In effetti, in quest'ultimo caso, non è nemmeno possibile autenticare l'app in quanto la richiesta non viene inoltrata tramite HTTPS.
E 'l'autenticazione forme che è particolarmente problematico perché senza di essa, i cookie non sono impostati su "sicuro" e vengono inviati su HTTP se il sito è accessibile da nome di dominio solo e implicitamente serve lo schema URL insicuro.
Quale sarebbe la soluzione migliore per questo? Preferirei sfruttare la configurazione di sicurezza nativa, qualcuno può vedere un modo per sovrascrivere l'implementazione che controlla se la connessione è sicura? E 'abbastanza facile per rilevare se la richiesta è stata servita su HTTPS (sia basato sulla Request.Url.Scheme
o l'intestazione X_FORWARDED_FOR
), è solo una questione di legare ordinatamente questo.
IsSecureConnection controlla solo se l'url inizia con https: // (e non con http: //) – Aristos
Ne sei sicuro? Sembra esserci di più anche in base alla risposta su App Harbor e ad altre persone che hanno problemi simili nelle stesse circostanze in altri scenari con carico bilanciato. La mia comprensione è che controlla se la connessione utilizza socket sicuri ma non dipende da se lo schema URL è HTTPS, quindi il problema. –
l'ultima volta che ho controllato questo con NetReflector, e vedo il codice di "IsSecureConnection" che controlla solo se url inizia con https: // Se puoi eseguire NetReflector trovi la funzione e controlla tu stesso. – Aristos