Sobes.tech
Middle

¿Qué es la autenticación OAuth y cómo funciona?

sobes.tech AI

Respuesta de la IA

OAuth es un estándar abierto de autorización. Permite a un usuario otorgar acceso limitado a sus datos almacenados en otro servicio (servidor de recursos) a una aplicación de terceros, sin necesidad de compartir sus credenciales (nombre de usuario/contraseña) con esa aplicación.

El funcionamiento de OAuth se basa en la emisión de "tokens de acceso" en lugar de credenciales. El flujo típico funciona de la siguiente manera:

  1. Solicitud de autorización: El usuario intenta realizar una acción en una aplicación de terceros que requiere acceso a datos del servidor de recursos. La aplicación inicia una solicitud de autorización al servidor de autorización del servidor de recursos.
  2. Redirección al servidor de autorización: El usuario es redirigido a la página del servidor de autorización.
  3. Autenticación del usuario: El usuario se autentica en el servidor de autorización (si aún no lo ha hecho).
  4. Consentimiento del usuario: El servidor de autorización solicita al usuario permiso para conceder a la aplicación de terceros un nivel específico de acceso a sus datos (alcances). El usuario acepta o rechaza la solicitud.
  5. Emisión del código de autorización: Si el usuario acepta, el servidor de autorización redirige al usuario de vuelta a la aplicación de terceros, proporcionando un "código de autorización".
  6. Intercambio del código de autorización por un token de acceso: La aplicación de terceros, tras recibir el código de autorización, realiza una solicitud directamente al servidor de autorización para intercambiar ese código por un "token de acceso" y opcionalmente un "token de actualización". Esta solicitud se realiza entre servidores, evitando el navegador del usuario, lo que aumenta la seguridad.
  7. Acceso a los datos: La aplicación de terceros usa el token de acceso obtenido para realizar solicitudes al servidor de recursos en nombre del usuario. Cada solicitud incluye el token en el encabezado.
  8. Validación del token: El servidor de recursos valida el token de acceso y, si es válido y coincide con los alcances solicitados, concede acceso a los datos.

OAuth tiene varios flujos (flows), adecuados para diferentes escenarios, por ejemplo:

  • Authorization Code Flow: El más seguro, utilizado para aplicaciones web con backend.
  • Implicit Flow: Obsoleto, se usaba para aplicaciones web sin backend.
  • Client Credentials Flow: Para aplicaciones que acceden a sus propios recursos, no a los del usuario.
  • Resource Owner Password Credentials Flow: No recomendado, implica transmitir las credenciales del usuario a la aplicación.

(Ejemplo de Authorization Code Flow)

En C#, para implementar OAuth en aplicaciones web, a menudo se utilizan bibliotecas como ASP.NET Core Identity con diferentes proveedores (Google, Facebook, etc.), o bibliotecas como IdentityServer para crear un servidor de autorización propio.