microsoft - Reenviar http a https en Azure
azure wikipedia (4)
Tenemos una implementación en Azure con un rol web que usa https. Dado que esta es la única forma en que nos gustaría que nuestros usuarios accedan al sistema, queremos reenviar los usuarios que visitan la versión http a la versión https.
Hemos probado las recomendaciones aquí .
A saber, agregamos lo siguiente a nuestro web.config:
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
Sin embargo, esto no parece funcionar. ¿Alguien tiene alguna idea de cómo lograr esto? Parece que sería una petición común ...
Smarx acaba de hacer una publicación en el blog acerca de esto un par de minutos nuevamente;)
http://blog.smarx.com/posts/redirecting-to-https-in-windows-azure-two-methods
En caso de que el sitio se caiga aquí hay un resumen:
Reescribir la URL de IIS
Si no está utilizando ASP.NET MVC pero está utilizando IIS (como en una función web), puede usar el módulo Reescribir URL , que está instalado de manera predeterminada. El uso de este módulo para redirigir a HTTPS es bastante trivial y está documentado en otra parte, pero lograr que todo funcione correctamente en el emulador de cómputo local no es trivial. En particular, la mayoría de los ejemplos que encontrarás supondrán que el tráfico HTTP siempre estará en el puerto 80, lo que no siempre es el caso cuando se prueba bajo el emulador de cómputo. Aquí hay una regla que parece funcionar localmente y en la nube:
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to HTTPS">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
<add input="{URL}" pattern="/$" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="https://{SERVER_NAME}/{R:1}" redirectType="SeeOther" />
</rule>
</rules>
</rewrite>
Agregando a las respuestas ya mencionadas aquí. Esto es obvio una vez que lo piensas, pero no fue así cuando leí esta publicación por primera vez.
Debe asegurarse de abrir el puerto 80 y vincularlo a su sitio a través de su archivo ServiceDefinition para que funcione.
Las entradas de muestra se ven así:
<Sites>
<Site name="Web" physicalDirectory="./SitesRoot">
<VirtualDirectory name="www" physicalDirectory="./SitesRoot/dist" />
<Bindings>
<Binding name="HttpsEndpoint" endpointName="HttpsEndpoint" />
<Binding name="HttpEndpoint" endpointName="HttpEndpoint" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="HttpsEndpoint" protocol="https" port="443" certificate="MY_SSL_CERT.pfx" />
<InputEndpoint name="HttpEndpoint" protocol="http" port="80" />
</Endpoints>
Solo agregué la respuesta de Kevin Cloet al blog de Smarx. Para establecer el atributo RequireHttps solo en modo Release, puede usar HttpContext.Current.IsDebuggingEnabled
public static void RegisterGlobalFilters(GlobalFilterCollection filters) {
if (!HttpContext.Current.IsDebuggingEnabled) {
filters.Add(new RequireHttpsAttribute());
}
}
Por favor, consulte este enlace: https://.com/a/27324439/1933168
La forma más fácil de hacerlo es instalar la extensión Redirigir HTTP a HTTPS .
Para instalarlo, abra su aplicación web desde el Tablero y haga clic en la pestaña Extensiones.
Busque Redirect HTTP to HTTPS
e instálelo.
Eso es. Sin configuración o instrucciones de configuración complicadas