OAuth 2.0 y autorización JWT en C#: guía para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿por qué OAuth 2.0 y JWT son el estándar de la autorización moderna?

En el desarrollo web moderno, la transferencia segura de datos entre el cliente y el servidor es una tarea críticamente importante. Dos protocolos clave que ayudan a resolver esta tarea son OAuth 2.0 (protocolo de autorización abierto) y JWT (JSON Web Token).

OAuth 2.0 permite a las aplicaciones obtener acceso limitado a los recursos del usuario sin transmitir su nombre de usuario y contraseña. JWT, a su vez, es un formato de token compacto y autónomo que contiene toda la información necesaria para identificar al usuario.

En este artículo, analizaremos cómo implementar OAuth 2.0 y autorización JWT en C# (.NET). Aprenderá a configurar middleware, generar un token y proteger endpoints de API. El material está dirigido a desarrolladores principiantes familiarizados con los fundamentos de ASP.NET Core.



1. Fundamentos de OAuth 2.0 y JWT

Antes de escribir código, comprendamos los conceptos clave.

¿Qué es OAuth 2.0?

OAuth 2.0 es un protocolo de autorización que permite a aplicaciones de terceros acceder a los recursos del usuario (por ejemplo, datos del perfil) sin transmitir sus credenciales. En su lugar, se utiliza un token de acceso (access token).

Roles principales en OAuth 2.0:

  • Resource Owner — el usuario propietario de los recursos.
  • Client — la aplicación que solicita acceso.
  • Authorization Server — el servidor que emite tokens tras la autenticación del usuario.
  • Resource Server — el servidor que proporciona recursos protegidos (por ejemplo, API).

¿Qué es JWT?

JWT (JSON Web Token) es un formato de token que consta de tres partes separadas por puntos:

  • Header — contiene el tipo de token (JWT) y el algoritmo de firma (por ejemplo, HS256).
  • Payload — contiene los datos (claims), como el identificador de usuario, rol, fecha de expiración.
  • Signature — la firma que garantiza la integridad del token.

Un token JWT se ve así: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

JWT es autónomo: el servidor no necesita almacenar sesiones en la base de datos, toda la información ya está cifrada en el token.



2. Configuración del proyecto ASP.NET Core para autorización JWT

Crearemos un nuevo proyecto ASP.NET Core Web API y configuraremos la autorización JWT.

Paso 1: Instalación de paquetes NuGet

Para trabajar con JWT necesitamos el paquete Microsoft.AspNetCore.Authentication.JwtBearer. Instálelo a través del Administrador de paquetes NuGet o la consola:

dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer

Paso 2: Configuración de appsettings.json

Agregue una sección para almacenar los parámetros JWT (clave secreta, emisor, audiencia):

{  "Jwt": {    "Key": "YourSuperSecretKey123!@#$%^&*()",    "Issuer": "YourApp",    "Audience": "YourAppUsers",    "ExpireMinutes": 60  }}

Paso 3: Configuración de Program.cs

En el archivo Program.cs (o Startup.cs para versiones antiguas) agregamos los servicios de autenticación y middleware:

using Microsoft.AspNetCore.Authentication.JwtBearer;using Microsoft.IdentityModel.Tokens;using System.Text;

var builder = WebApplication.CreateBuilder(args);

// Configuración de autenticación JWTbuilder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true,

Blogs

Book Recommendations