security - encriptado - json web token java
¿Qué es la autenticación basada en token? (8)
Creo que está bien explicado here , citando solo las frases clave del largo artículo:
El concepto general detrás de un sistema de autenticación basado en token es simple. Permitir que los usuarios ingresen su nombre de usuario y contraseña para obtener un token que les permita obtener un recurso específico, sin usar su nombre de usuario y contraseña. Una vez que se ha obtenido su token, el usuario puede ofrecer el token, que ofrece acceso a un recurso específico durante un período de tiempo, al sitio remoto.
En otras palabras: agregue un nivel de direccionamiento indirecto para la autenticación: en lugar de tener que autenticar con un nombre de usuario y contraseña para cada recurso protegido, el usuario se autentica de esa manera una vez (dentro de una sesión de duración limitada), obtiene un token de tiempo limitado a cambio , y utiliza ese token para una mayor autenticación durante la sesión.
Las ventajas son muchas: por ejemplo, el usuario podría pasar el token, una vez que lo haya obtenido, a algún otro sistema automatizado en el que esté dispuesto a confiar por un tiempo limitado y un conjunto limitado de recursos, pero no estaría dispuesto a hacerlo. confiar con su nombre de usuario y contraseña (es decir, con cada recurso al que pueden acceder, para siempre o al menos hasta que cambien su contraseña).
Si algo no está claro, edite su pregunta para aclarar QUÉ no es 100% claro para usted, y estoy seguro de que podemos ayudarlo más.
Quiero entender qué significa la autenticación basada en token. Busqué en internet pero no pude encontrar nada comprensible.
Cuando se registra para un nuevo sitio web, a menudo se le envía un correo electrónico para activar su cuenta. Ese correo electrónico normalmente contiene un enlace para hacer clic. Parte de ese enlace, contiene un token, el servidor conoce este token y puede asociarlo a su cuenta. Por lo general, el token tendrá una fecha de caducidad asociada, por lo que solo tendrá una hora para hacer clic en el enlace y activar su cuenta. Nada de esto sería posible con cookies o variables de sesión, ya que no se sabe qué dispositivo o navegador está utilizando el cliente para consultar los correos electrónicos.
De Auth0.com
La autenticación basada en token, se basa en un token firmado que se envía al servidor en cada solicitud.
¿Cuáles son los beneficios de usar un enfoque basado en token?
Dominio cruzado / CORS: las cookies + CORS no funcionan bien en diferentes dominios. Un enfoque basado en token le permite realizar llamadas AJAX a cualquier servidor, en cualquier dominio, ya que utiliza un encabezado HTTP para transmitir la información del usuario.
Sin estado (también conocido como escalabilidad del lado del servidor): no es necesario mantener un almacén de sesión, el token es una entidad independiente que transmite toda la información del usuario. El resto del estado vive en cookies o almacenamiento local en el lado del cliente.
CDN: puede servir todos los recursos de su aplicación desde un CDN (por ejemplo, javascript, HTML, imágenes, etc.), y su servidor es solo la API.
Desacoplamiento: no está vinculado a ningún esquema de autenticación particular. El token puede generarse en cualquier lugar, por lo tanto, se puede llamar a su API desde cualquier lugar con una única forma de autenticar esas llamadas.
Listo para dispositivos móviles: cuando empiezas a trabajar en una plataforma nativa (iOS, Android, Windows 8, etc.), las cookies no son ideales cuando se consume un enfoque basado en token que simplifica mucho esto.
CSRF: ya que no confía en las cookies, no necesita protegerse contra las solicitudes entre sitios (por ejemplo, no sería posible analizar su sitio, generar una solicitud POST y reutilizar la cookie de autenticación existente porque no habrá ninguna) ).
Rendimiento: aquí no presentamos ningún punto de referencia de rendimiento sólido, pero es probable que un viaje de ida y vuelta en la red (por ejemplo, encontrar una sesión en la base de datos) lleve más tiempo que calcular un HMACSHA256 para validar un token y analizar su contenido.
Es solo el hash que está asociado con el usuario en la base de datos o de alguna otra manera. Ese token se puede usar para autorizar a un usuario a acceder a otros contenidos relacionados de la aplicación. Para recuperar este token es necesario iniciar sesión en el lado del cliente. Después de iniciar sesión por primera vez, debe guardar el token recuperado, no cualquier otro dato como session, session id porque aquí todo es token para acceder a otros recursos de la aplicación.
Token se utiliza para asegurar la autenticidad del usuario.
La pregunta es antigua y la tecnología ha avanzado, aquí está el estado actual:
JSON Web Token (JWT) es un estándar abierto basado en JSON (RFC 7519) para pasar reclamaciones entre partes en un entorno de aplicación web. Los tokens están diseñados para ser compactos, seguros de URL y utilizables especialmente en el contexto de inicio de sesión único (SSO) del navegador web.
Un token es un dato creado por el servidor y contiene información para identificar un usuario particular y la validez del token. El token contendrá la información del usuario, así como un código de token especial que el usuario puede pasar al servidor con cada método que admita la autenticación, en lugar de pasar un nombre de usuario y una contraseña directamente.
La autenticación basada en token es una técnica de seguridad que autentica a los usuarios que intentan iniciar sesión en un servidor, una red o algún otro sistema seguro, utilizando un token de seguridad proporcionado por el servidor.
Una autenticación es exitosa si un usuario puede demostrarle a un servidor que él o ella es un usuario válido al pasar un token de seguridad. El servicio valida el token de seguridad y procesa la solicitud del usuario.
Una vez que el token es validado por el servicio, se usa para establecer un contexto de seguridad para el cliente, de modo que el servicio pueda tomar decisiones de autorización o actividad de auditoría para solicitudes de usuarios sucesivas.
Basado en Token (Seguridad / Autenticación)
significa que para que podamos demostrar que hemos accedido, primero tenemos que recibir el token. En una situación de la vida real, el token podría ser una tarjeta de acceso a la construcción, podría ser la llave de la cerradura de su casa. Para poder recuperar una tarjeta de acceso para su oficina o la de su casa, primero debe demostrar quién es usted y que, de hecho, tiene acceso a ese token. Podría ser algo tan simple como mostrarle a alguien su identificación o darle una contraseña secreta. Así que imagina que necesito tener acceso a mi oficina. Bajé a la oficina de seguridad, les muestro mi identificación y me entregan esta ficha, que me permite ingresar al edificio. Ahora tengo acceso sin restricciones para hacer lo que quiera dentro del edificio, siempre y cuando tenga mi ficha conmigo.
¿Cuál es el beneficio de la seguridad basada en token?
Si recordamos la API insegura, lo que teníamos que hacer en ese caso era que debíamos proporcionar nuestra contraseña para todo lo que queríamos hacer.
Imagine que cada vez que entramos por una puerta en nuestra oficina, tenemos que darles a todos los que están sentados junto a la puerta nuestra contraseña. Ahora eso sería bastante malo, porque eso significa que cualquier persona dentro de nuestra oficina podría tomar nuestra contraseña y suplantarnos, y eso es bastante malo. En cambio, lo que hacemos es que recuperamos el token, por supuesto, junto con la contraseña, pero lo recuperamos de una persona. Y luego podemos usar este token donde queramos dentro del edificio. Por supuesto, si perdemos el token, tenemos el mismo problema que si alguien más conociera nuestra contraseña, pero eso nos lleva a cosas como cómo asegurarnos de que si perdemos el token, podemos revocar el acceso, y quizás el token. no debe vivir más de 24 horas, por lo que al día siguiente que vayamos a la oficina, debemos mostrar nuestra identificación nuevamente. Pero aún así, solo hay una persona a la que mostramos la identificación, y ese es el guardia de seguridad que está sentado donde recuperamos las fichas.
Un token
es un dato que solo el Server X
podría haber creado, y que contiene datos suficientes para identificar a un usuario en particular.
Puede presentar su información de inicio de sesión y solicitar un token
Server X
; y luego puede presentar su token
y pedirle al Server X
que realice alguna acción específica del usuario.
Token
se crean utilizando varias combinaciones de diversas técnicas del campo de la criptografía, así como con aportaciones del campo más amplio de investigación de seguridad. Si decides ir y crear tu propio sistema de token
, será mejor que seas realmente inteligente.