Está en la página 1de 21

Protegiendo tu API REST

con JWT en
aplicaciones .NET
1. Conceptos básicos de seguridad
2. Cookies vs Tokens
3. Definiciones de JWT
4. Fundamentos de JWT
5. Anatomía de JWT
6. Estructura de un Token
7. Nuestros amigos debuggers
8. Ciclo de vida de un Token
9. Librerías y vulnerabilidades
10.Vamos a la acción
UN REPASO A CONCEPTOS BASICOS
Autenticación
- Recepción hotel
- Login con password
- HTTP 401 Unauthorized

Autorización
- Llave de la habitación
- Permisos de acceso
- HTTP 403 Forbidden
Cookies vs Tokens

Cookies: WebForms, asp.net mvc, etc Tokens: Api key, OAuth2, openID, SSO, etc.
Sesión: Necesitan ser guardas en el servidor, -Escalable Sesión: Se almacena en cada cliente, +Escalable
Datos: Contiene la sessionID, AUTH del usuario Datos: Contiene información del usuario
https://es.wikipedia.org/wiki/JSON_Web_Token https://tools.ietf.org/html/rfc7519
• Desktop, Mobile & Web Ready!!
• Ligero: podemos codificar gran cantidad de datos y pasarlo como una cadena.
• Self-container: Delegamos mantener el estado al cliente.
• Stateless: Creamos servicios optimizados desacoplados del servidor .
• Scalable: Los webserver pueden escalar sin problemas y aumentar en rendimiento.
• La información es confiable porque está firmada digitalmente.
• "Authorization: Bearer token“ es la forma más común de enviarlo (existen otras).
• ¡Nos olvidamos de cookies!

• JWT sirve para transmitir información de un usuario garantizando integridad de datos


entre un cliente/servidor mediante una cadena de texto codificada en Base64.

• Los JWT son mecanismos para transferir datos, no para asegurarlo


• Los JWT son seguros cuando se utiliza conjuntamente con HTTPS

RECORDAR: Siempre, debemos usar HTTPS entre el cliente/servidor para encriptar las peticiones.
ANATOMIA DEL TOKEN

HEADER: Indica el algoritmo y tipo de Token.


PAYLOAD: Datos de usuario/claims
SIGNATURE: la firma, para verificar que el token es válido.
ESTRUCTURA DEL TOKEN (Claims)
Claims: No son obligatorios.
Claims: Se recomienda seguir este formato.
Claims: No todas las librerías .NET los implementan.

jti: Es muy útil para usar Tokens de un solo uso y evitar ataques.

Especificación: https://tools.ietf.org/html/rfc7519
JWT – ESTRUCTURA DEL TOKEN

HEADER: Algoritmo Hash HS256 y token JWT.


PAYLOAD: Datos de nombre usuario y lo que necesite nuestra API para validar la petición,
recordar que nosotros generamos el token y podemos incluir todos los atributos que queramos.
SIGNATURE: Firma para la integridad del Token
Aquí lo importante es el “SECRET" con el que firmamos y que ahora explicaremos.
NUESTRO AMIGOS DEBUGGERS
DEMO: Lo importante es el SECRET con el que firmamos el token y no debemos darlo a nadie.
JWT
LIBRERIAS
Y
VULNERABILIDADES

https://docs.microsoft.com/en-us/security-updates
JWT
LIBRERIAS
Y
VULNERABILIDADES

Vulnerabilities: https://docs.microsoft.com/en-us/security-updates/securityadvisories/2017/3214296
Ciclo de vida de un Token
DEMO ASP.NET WEB API
DEBUGGERS
CUESTIONES CLAVE

• Que pasa cuando recibo el token en mi controlador


• Que pasa cuando caduca el token en mi aplicación
• Que pasa cuando realizamos logout en app/web
• Que pasa con mis token en devlocal y producción
• Que pasa si tengo varias API REST que usan JWT
• Quien y donde se gestionan los usuarios de mi API
PREGUNTAS
REFERENCIAS
• https://enmilocalfunciona.io/construyendo-una-web-api-rest-segura-con-json-web-token-en-net-parte-i/
• https://enmilocalfunciona.io/construyendo-una-web-api-rest-segura-con-json-web-token-en-net-parte-ii/
• https://enmilocalfunciona.io/construyendo-una-web-api-rest-segura-con-json-web-token-en-net-parte-iii/
• https://github.com/santimacnet/WebAPI-Segura-JWT

• https://jwt.io
• https://www.jsonwebtoken.io
• https://tools.ietf.org/html/rfc7519
• https://docs.microsoft.com/en-us/security-updates/securityadvisories/2017/3214296
• https://auth0.com/blog/ten-things-you-should-know-about-tokens-and-cookies/

También podría gustarte