9.1 Json Web Tokens

Un Json Web Token es una cadena codificada en base64 formada por 3 partes las cuales están separadas por un punto.

  1. Header: Indica el algoritmo y tipo de token

  2. Payload: Datos del usuario, caducidad del token, roles del usuario

  3. Signature: Incluye una llave secreta para validar el token

Para poder generar los tokens necesitamos:

  • LLave secreta: Es una llave que permite validar la información del token

  • Issuer: Es quien genera el token, por lo general es la URL del servidor que contiene los servicios

  • Audience: Sirve para identificar quienes puedes conectarse a tus servicios, por ejemplo quieres que tus servicios solo sean accesibles con la audiencia www.tusistema.com

La información adicional que guardas en el token como el id del usuario se conoce como Claims, la lista de claims disponibles es:

Los principales claims son los siguientes:

Tipo

Descripción

DateOfBirth

Fecha de Nacimiento del usuario

Email

Correo electrónico del usuario

Country

País del usuario si deseas restringir opciones por país

Sid

Puede guardar un id de seguridad

Adicional a estos claims puedes agregar los tuyos, como por ejemplo clave del cliente.

Puedes ver la documentación sobre los JWT Tokens aqui

En .NET Core implementar este tipo de seguridad es relativamente fácil.

Tipos de seguridad

.Net cuenta con diversas maneras para validar tus tokens los principales son las siguientes:

  • Seguridad basada en roles: Permite validar el acceso a tus servicios de acuerdo al tipo de usuario, por ejemplo vendedor, administrador, cliente cada uno tiene acceso a diferente información

  • Seguridad basada en directivas: Se valida de acuerdo a alguna regla de negocio propia, como por ejemplo que debe ser mayor a 18 años para acceder al servicio.

  • Seguridad personalizada: Puedes agregar tus propias reglas. Por ejemplo si tu aplicación permite cargar documentos, los documentos solo deben estar disponibles para el usuario que subió el archivo.

Puedes ver la documentación oficial de microsoft aquí

Puedes ver también el video del evento build 2017 de microsoft en inglés donde explican los diferentes tipos de seguridad