9.1 Json Web Tokens
Last updated
Last updated
Un Json Web Token es una cadena codificada en base64 formada por 3 partes las cuales están separadas por un punto:
Header: Indica el algoritmo y tipo de token
Payload: Datos del usuario, caducidad del token, roles del usuario
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 pueden 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 |
Fecha de Nacimiento del usuario | |
Correo electrónico del usuario | |
País del usuario si deseas restringir opciones por país | |
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 aquí
.Net cuenta con diversas maneras para validar tus tokens los principales son los siguientes:
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.
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.
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