Introducción
En el post anterior vimos como realizar consultas de WebApi utilizando credenciales de autenticación, en este nuevo post veremos como exigir que el consumo de nuestras Apis se haga por medio de HTTPs.

Es de tener en cuenta que cuando estamos trabajando con autenticación básica de WebApi, las credenciales van incluidas en el Header de la solicitud, sin embargo, si estos paquetes son interceptados en la red se podría conocer la autenticación que se está enviando en el encabezado.

Para proteger estas solicitudes utilizamos el protocolo Https para encriptar la solicitud que se envía entre el cliente y el servidor, garantizando que no se puedan interceptar las credenciales enviadas en la solicitud.

En este post se explica el proceso en vídeo y por medio de una guía a continuación el vídeo de explicación y más abajo el proceso de construcción del ejemplo:

Construyendo el ejemplo

Inicialmente debemos ingresar a las propiedades de nuestro proyecto de WebApi y habilitar el acceso por Https:

wpid-PastedGraphic-2015-06-2-20-57.png

Posterior a esto crearemos un atributo personalizado que nos servirá para realizar la validación de la solicitud y que nos permitirá identificar cuales de nuestros métodos requieren ser accedidos por Https

public class RequireHttpsAttribute : AuthorizationFilterAttribute

{

public override void OnAuthorization(HttpActionContext actionContext)

{

if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)

{

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

{

ReasonPhrase = “Se requiere Https“

};

}

else

{

base.OnAuthorization(actionContext);

}

}

}

Una vez definido el atributo personalizado, simplemente lo agregamos a los métodos que necesitemos, de la siguiente forma:

public class ValuesController : ApiController

{

[HttpGet]

[Authorize]

[RequireHttps]

public IHttpActionResult Get()

{

return Ok(“Hola Mundo“);

}

}

Finalmente al intentar consumir nuestra Api, identificaremos que al consultarla por medio de Http nos devuelve un código de resultado de prohibido indicando el mensaje que parametrizamos en nuestro método de autorización.

wpid-PastedGraphic1-2015-06-2-20-57.png

Al consumir la Api por Https vemos un mensaje de resultado indicando que se ejecuta de forma correcta:

wpid-PastedGraphic2-2015-06-2-20-57.png

Este artículo también lo encontrarás en mi blog: http://www.yovento.com

Saludos.