"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Tipos de autenticación: JWT, OAuth e integración segura con Google y Facebook

Tipos de autenticación: JWT, OAuth e integración segura con Google y Facebook

Publicado el 2024-10-31
Navegar:523

Authentication Types: JWT, OAuth, and Secure Integration with Google and Facebook

En el mundo del desarrollo web moderno, la autenticación es esencial para garantizar un acceso seguro a su aplicación. Hay varias formas de manejar la autenticación de usuarios y algunos de los métodos más populares incluyen JWT (JSON Web Token) y OAuth. En esta publicación, exploraremos estos métodos y le mostraremos cómo integrar la autenticación con servicios populares como Google y Facebook, todo mientras mantenemos su sistema seguro.

¿Qué es la autenticación?

La autenticación es el proceso de verificar la identidad de un usuario que intenta acceder a un sistema. Cuando inicias sesión en una aplicación, la autenticación garantiza que eres quien dices ser.

Existen varios métodos de autenticación, entre ellos:

  • Autenticación basada en contraseña: el método más común en el que los usuarios proporcionan un nombre de usuario y una contraseña.
  • Autenticación basada en token: los usuarios reciben un token después de iniciar sesión, que se utiliza para autenticar solicitudes posteriores.
  • OAuth: permite que servicios de terceros verifiquen usuarios, brindando acceso sin compartir contraseñas.

¿Qué es JWT (token web JSON)?

JSON Web Token (JWT) es un método popular para proteger API y aplicaciones de una sola página (SPA). Un JWT es un token compacto y seguro para URL que se utiliza para transmitir información de forma segura entre partes.

Esto es lo que constituye un JWT:

  • Encabezado: contiene información sobre el tipo de token y el algoritmo de firma (por ejemplo, HMAC, RSA).
  • Carga útil: contiene las reclamaciones o los datos que se transfieren (por ejemplo, ID de usuario, tiempo de vencimiento).
  • Firma: Garantiza la integridad del token verificando que los datos no hayan sido alterados.

Ejemplo de un JWT

{
  "header": {
    "alg": "HS256",
    "typ": "JWT"
  },
  "payload": {
    "sub": "1234567890",
    "name": "John Doe",
    "iat": 1516239022
  },
  "signature": "SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}

El JWT se crea codificando el encabezado, la carga útil y la firma mediante una clave secreta. Luego, este token se envía al cliente (normalmente se almacena en el almacenamiento local o en cookies) y se transmite junto con cada solicitud para autenticar al usuario.

Así es como funciona:

sequenceDiagram
    participant User
    participant Server
    User ->> Server: Sends Login Credentials
    Server ->> User: Sends JWT
    User ->> Server: Requests Data with JWT
    Server ->> User: Verifies Token, Responds with Data

¿Por qué utilizar JWT?

  1. Sin estado: el servidor no necesita almacenar ningún dato de sesión. El JWT contiene toda la información necesaria.
  2. Escalable: dado que no hay almacenamiento de sesiones en el servidor, es más fácil escalar aplicaciones.
  3. Seguridad: La firma garantiza que el token no ha sido manipulado.

¿Qué es OAuth?

OAuth es un estándar abierto para autorización. Permite a los usuarios iniciar sesión en aplicaciones de terceros utilizando sus cuentas existentes (por ejemplo, Google, Facebook) sin compartir sus credenciales con la aplicación de terceros.

OAuth funciona mediante la emisión de tokens de acceso que permiten que los servicios de terceros interactúen con otras plataformas en nombre del usuario.

Aquí hay un flujo básico para OAuth:

sequenceDiagram
    participant User
    participant App
    participant Google/Facebook
    User ->> App: Login with Google/Facebook
    App ->> Google/Facebook: Requests Authorization
    Google/Facebook ->> User: User Authorizes Access
    Google/Facebook ->> App: Sends Access Token
    App ->> User: Authenticated!
  1. El usuario hace clic en Iniciar sesión con Google o Iniciar sesión con Facebook.
  2. La aplicación redirige al usuario a Google/Facebook para su autenticación.
  3. El usuario acepta permitir el acceso a información específica (p. ej., perfil, correo electrónico).
  4. Google/Facebook proporciona un token de acceso a la aplicación.
  5. La aplicación utiliza el token para realizar solicitudes de API autorizadas en nombre del usuario.

¿Por qué utilizar OAuth?

  1. Conveniencia: los usuarios no necesitan crear una nueva contraseña o cuenta.
  2. Seguridad: Los usuarios nunca comparten sus credenciales directamente con su aplicación.
  3. Estandarizado: OAuth es ampliamente compatible con plataformas como Google, Facebook, Twitter, etc.

Integración de OAuth con Google y Facebook

Para integrar OAuth con Google o Facebook, sigue estos pasos:

Paso 1: crea una aplicación en Google o Facebook

  • Para Google, ve a Google Developer Console y crea un proyecto.
  • Para Facebook, vaya al Portal para desarrolladores de Facebook y configure una nueva aplicación.

Paso 2: obtenga la identificación del cliente y el secreto del cliente

Recibirás un ID de cliente y un Secreto de cliente de Google o Facebook. Estos se utilizan para identificar su aplicación y autorizarla.

Paso 3: configura OAuth en tu aplicación

Aquí hay un ejemplo que utiliza Node.js y Passport.js para implementar la autenticación de Google:

const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;

passport.use(new GoogleStrategy({
    clientID: process.env.GOOGLE_CLIENT_ID,
    clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    callbackURL: '/auth/google/callback'
  },
  function(token, tokenSecret, profile, done) {
    // Save the user info from the profile
    return done(null, profile);
  }
));

// Routes for authentication
app.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }));

app.get('/auth/google/callback', 
  passport.authenticate('google', { failureRedirect: '/' }),
  function(req, res) {
    // Successful authentication
    res.redirect('/dashboard');
  });

En este ejemplo:

  1. El usuario hace clic en "Iniciar sesión con Google".
  2. El usuario es redirigido a Google para su autenticación.
  3. Después de iniciar sesión correctamente, Google redirige al usuario a tu aplicación con un token de acceso.

Asegurar la autenticación

La seguridad es fundamental al implementar la autenticación. Estas son algunas de las mejores prácticas para proteger su sistema de autenticación:

1. Usar HTTPS

Utilice siempre HTTPS para cifrar los datos transmitidos entre el cliente y el servidor. Esto evita que los atacantes intercepten información confidencial.

2. Implementar la caducidad del token

Los tokens (especialmente los JWT) deben tener un tiempo de vencimiento para reducir el riesgo de reutilización de tokens. Por ejemplo, puede configurar los JWT para que caduquen en 15 minutos y usar tokens de actualización para generar nuevos tokens.

3. Almacenar tokens de forma segura

Para aplicaciones web, almacene tokens en cookies httpOnly en lugar de almacenamiento local. Esto evita que los ataques basados ​​en JavaScript (como XSS) accedan al token.

4. Rotar fichas

Rote e invalide periódicamente los tokens para minimizar el daño causado por los tokens filtrados.

5. Utilice secretos sólidos del cliente

Asegúrese de que su ID de cliente y su Secreto de cliente sean seguros y nunca estén expuestos al público. Guárdelos de forma segura utilizando variables de entorno.

Conclusión

La autenticación es un aspecto fundamental de cualquier aplicación web y existen varias formas de manejarla. JWT proporciona un enfoque escalable y sin estado, mientras que OAuth ofrece una integración perfecta con servicios de terceros como Google y Facebook.

Al seguir las mejores prácticas de seguridad, puede asegurarse de que su sistema de autenticación no solo sea fácil de usar sino también seguro.

Declaración de liberación Este artículo se reproduce en: https://dev.to/ivannalon/authentication-types-jwt-oauth-and-secure-integration-with-google-and-facebook-3do6?1 Si hay alguna infracción, comuníquese con Study_golang @163.com eliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3