2017-02-17 1 views
0

J'utilise MVC5 dans certains serveurs IIS sur Amazon EC2, derrière un programme Amazon Elastic Load Balancer. Les serveurs IIS exécutent uniquement le protocole HTTP et ELB convertit en HTTPS.Redirection MVT HTTPS derrière un équilibreur de charge

Le serveur IIS ne sait pas si l'utilisateur accède via HTTPS, donc j'ai une règle de réécriture vérifiant l'en-tête "X-Forwarded-Proto" pour rediriger l'utilisateur vers HTTPS.

Malheureusement, lorsqu'une connexion est requise, MVC/IIS redirige l'utilisateur vers une page de connexion dans HTTP.

Si je vérifie mon site dans un outil comme http://www.redirect-checker.org/ je reçois ce type de résultats:

http://example.com/

301 Déplacement définitif (ma règle de réécriture d'URL)

https://example.com/

302 Found (Redirection requise de connexion -> pourquoi HTTP?)

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

301 Moved Permanently (encore une fois ma règle de réécriture d'URL)

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

200 OK

Est-ce que je manque quelque chose? Puis-je configurer login-redirect pour conserver le protocole, en éliminant l'une de ces redirections? Mieux encore, puis-je précéder d'une manière ou d'une autre la règle de redirection de connexion et la forcer à HTTPS, afin d'avoir une seule redirection?

Merci beaucoup!

Annexe: J'ai vérifié que les commandes comme "RedirectToAction" envoyer l'adresse comme "/ Index2", pas tout "http://example.com/Index2". C'est très bien, donc ça garde le protocole utilisateur.

Répondre

0

En supposant que vous utilisez authentification par formulaire ASP.NET, consultez dans votre web.config pour votre configuration Authentication et ajoutez requireSsl="true" à l'élément <forms>, comme ci-dessous:

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

En fait, je suis en utilisant AspNet.Identity v2.2.1. Cela semble être le moyen, mais je ne pouvais pas trouver un équivalent de requireSSL. – TNT

+1

Il pourrait être utile de jeter un oeil à cette question SO: http://stackoverflow.com/questions/30615017/asp-net-identity-login-redirect-enforce-protocol-https –