Pregunte al propietario de la información si autoriza la solicitud.
Como señala Neil Smithline en su excelente respuesta a esta pregunta , los RFC en JWT, OAuth y muchos otros sistemas de autenticación basados en token se basan en que el usuario final mantiene el secreto de su token.
Para mí, personalmente, es una píldora difícil de tragar: muchos usuarios finales no entienden qué es un token o incluso dónde está, y mucho menos por qué o cómo deberían asegurarlo.
Si bien esto puede sonar tan fundamental, es delicado señalar: si un usuario final tiene consciente de que alguien está intentando acceder a su información privada, o si un usuario final es consciente de que la privacidad de su clave ha sido comprometido, se podría argumentar que es mucho más probable que alerten a las partes interesadas de que algo salió mal.
Por lo tanto, uno podría concluir que la tarea en cuestión es diseñar un sistema por el cual sea fácil para los usuarios finales saber cuándo se está accediendo a su información privada, cuando se está utilizando su token. Si bien no podemos diseñar un sistema que no confíe en la confianza, podemos diseñar un sistema que vincule la protección de la clave con los intereses que el usuario ya tiene y sabe cómo administrar.
En una implementación hipotética de un sistema que usa tokens web, uno podría experimentar con lo siguiente:
- Realice pruebas en la infraestructura de la aplicación para asegurarse de que está utilizando Perfect Forward Security.
- Pregunte a los clientes que acceden a la infraestructura de la aplicación quiénes son.
- Busque la identificación proporcionada por el cliente en un sistema interno que asigna la identificación a un teléfono celular, y comuníquese con ese teléfono celular.
- El mensaje enviado al teléfono proporcionará la mayor cantidad de información posible sobre el cliente, y le preguntará a la persona que tiene el control del teléfono si el cliente debe tener autorización para usar la infraestructura de la aplicación.
- Si el cliente está autorizado por la persona que controla el teléfono, emita un token para el cliente y mantenga un registro de cómo se usa el token. Además, comparta las partes pertinentes de ese registro con el teléfono registrado.
- Caduca el token después de un corto período de tiempo; rechazar cualquier otra solicitud utilizando ese token.
Si bien los pasos anteriores no forman parte de los RFC en los tokens web de JSON, OAuth o muchos otros sistemas de autenticación basados en token, parcialmente desplaza el problema de la confianza de un usuario que no sabe cómo mantener un token seguro a un grupo de ingenieros que, idealmente, saben cómo implementar bien la autenticación de dos factores.