[Tips] ASP.NET Web API- Detectando HTTPS

Hola, vamos a ver rápidamente un tip que encuentro de bastante utilidad para determinar si nuestra web api se está ejecutando en un entorno seguro, al menos a nivel de https. Lo anterior lo vamos a lograr mediantes los customfilters, puedes ver un tutorial de Stephen Walther acá http://stephenwalther.com/archive/2012/03/05/introduction-to-the-asp-net-web-api.aspx para revisar el tema de los filtros.

Entonces vamos a crear el Filtro , al que he llamado VerificaHttpsAttribute: 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net.Http;

using System.Web;

using System.Web.Http.Controllers;

using System.Web.Http.Filters;

 

namespace WebAPITest

{

    public class VerificaHttpsAttribute : ActionFilterAttribute

    {

     public override void OnActionExecuting(HttpActionContext actionContext)

     {

        if (!String.Equals(actionContext.Request.RequestUri.Scheme, "https",
             StringComparison
.OrdinalIgnoreCase))

         {

          actionContext.Response = new HttpResponseMessage
                                      (System.Net.
HttpStatusCode
.BadRequest)

           {

               Content = new StringContent("Se requiere HTTPS")

            };

                return;

            }

        }

    }

Como vez, se hace la comparación sobre el string https que viene en el RequestURI.Scheme para determinar si se está ejecutando la Web API en una conexión segura.

Luego hay que agregar este filtro global al global.asax , de manera de no agregarlo por contraolador, por lo que vamos agregar:

GlobalConfiguration.Configuration.Filters.Add(new VerificaHttpsAttribute());

Y listo, ahora si ejecutamos la aplicación:

image

 

Y como no estamos en un ambiente https, nos envía la información Sonrisa

Eso!, nos vemos en el siguiente articulo.

Saludos,
@chalalo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *