Acreditación y Autorización

Archivada en Desarrollo

Acreditación y Autorización

Serie “Angular para Djangonautas”

Este es el artículo número 2 de la serie “Angular para Djangonautas”:

  1. Angular para Djangonautas
  2. Acreditación y Autorización

Antes de entrar de lleno al desarrollo del Cuadro de Mando Integral reimaginado usando AngularJS y Django, debemos comprender algunos conceptos torales del paradigma usado.

En la definición del paradigma REST, uno de sus principios fundamentales es que las operaciones deben ser sin estado.

Esto quiere decir que el servidor no debe guardar información del cliente. Sin embargo, este es el funcionamiento normal de Django y está activado cuando creamos un proyecto por medio de las sesiones. Las sesiones son muy fáciles de usar, porque podemos delegar a Django operaciones como el ingreso (login) y la salida (logout). El middleware django.contrib.sessions.middleware.SessionMiddleware se encarga de almacenar en la base de datos1 la información sobre la sesión, de modo que siempre este disponible en el objeto request.

Sin estado

Como decía al principio, un sistema REST2 no debe almacenar el estado de las sesiones. Esta es una restricción y en inglés se llama stateless.

De acuerdo al inventor de este paradigma de desarrollo, Roy T. Fielding la restricción stateless se define de la siguiente manera:

5.1.3 sin estado

[…] Cada solicitud desde el cliente al servidor debe contener toda la información necesaria para comprender dicha solicitud, y no puede tomar ventaja de cualquier contexto almacenado en el servidor. Por lo tanto, el estado de sesión se mantiene por completo en el cliente. […] De modo que, el servidor no tiene que almacenar cualquier estado de la sesión y, en consecuencia, no debe emitir identificadores de sesión.3

Acreditación y Autorización

Si necesitamos acceder a los recursos protegidos de nuestra API que requieran acreditación4, cada solicitud debe contener los datos necesarios para poder acreditar adecuadamente nuestra autorización para acceder a esos recursos. Y estos datos se envían en cada solicitud en el encabezado Authorization5 de HTTP.

Si tiene acceso a los recursos protegidos que requieren autenticación, cada solicitud debe contener todos los datos necesarios para ser autenticados adecuadamente / autorizado. Y datos de autenticación deben pertenecer al encabezado de autorización HTTP estándar. A partir de la RFC 7235:

Y ya que no podemos acreditar nuestra autorización para consultar los recursos protegidos usando sesiones como lo hacemos normalmente en Django, debemos usar otros métodos. Para efectos didácticos, usaremos Tokens, pero de eso hablaremos en el siguiente artículo de esta serie.


  1. Generalmente, porque hay varias formas de almacenar sesiones, como las cookies, caché de memoria y archivos. 

  2. Cuando un sistema cumple con los principios del paradigma REST, se le conoce como RESTful

  3. https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_3 

  4. Es muy frecuente que se use autenticación como la traducción de Authentication, pero la traducción correcta es acreditación

  5. El protocolo HTTP se define en el RFC 7235: https://tools.ietf.org/html/rfc7235#section-4.2

Javier Sanchez Toledano

Soy programador en Django+Python y WordPress. Auditor líder certificado en la norma ISO 9001:2008. Fotógrafo aficionado.
Redes Sociales:

Tlaxcala, México

Comentarios