Protección de APIs con Autenticación Token en Laravel

Clase 36 de 37Curso de Introducción a Laravel 6

Resumen

¿Cómo configurar protección en una API con invitados?

¡Bienvenido! En este contenido, exploramos las configuraciones necesarias para proteger una API frente a usuarios no autenticados, con foco en el uso de la autenticación mediante token. La clave está en saber qué hacer cuando recibes a un usuario invitado.

¿Por qué es esencial tener métodos de test adicionales?

  • Desarrollo controlado: Nuestro controlador tiene cinco métodos, pero a nivel de pruebas sumamos uno adicional para validación.
  • Mejora continua: Nos permite crear nuevos casos para situaciones específicas, como el acceso de invitados.
  • Evaluar protección: Podemos verificar cómo responde nuestro sistema cuando llegan usuarios no autenticados.

¿Cómo se configuran los métodos de prueba?

  1. Definir el comportamiento esperado: Queremos probar las rutas que reciben invitados.
  2. Configurar el estado esperado: El estatus debería ser 401 - Unauthorized al intentar acceder sin autenticación.
public function testGuestAccess()
{
    $this->get('/happy')->assertStatus(401);
}

¿Qué sucede al recibir un código de estado incorrecto?

  • Diagnóstico rápido: Si esperas un 401 y recibes un 200, probablemente la API esté pública.
  • Acción necesaria: Asegúrate de proteger las rutas mediante middleware.

¿Cómo asegurar una API con middleware?

  • Configura el middleware: Utiliza auth:api como middleware en routes/api.php para proteger las rutas.
  • Token Authentication: Ideal para APIs, asegurando que solo usuarios autenticados puedan acceder.
Route::middleware('auth:api')->get('/happy', function (Request $request) {
    //
});

¿Cómo se integra todo esto en las pruebas?

  1. Crear usuarios: Usa factories para simular usuarios.
  2. Prueba como usuario autenticado: Usa actingAs con el token.
$user = User::factory()->create();
$this->actingAs($user, 'api')->get('/happy')->assertStatus(200);

¿Qué sucede al realizar múltiples pruebas?

  • Multiplicidad: Duplica la configuración para probar todas las rutas (POST, PUT, DELETE).
  • Validación completa: Asegura que cada ruta muestra el comportamiento esperado.

Ejemplo de verificación de PUT

$user = User::factory()->create();
$this->actingAs($user, 'api')->put('/mil')->assertStatus(200);

¿Qué esperar tras la implementación?

  • Feedback inmediato: Al ejecutar las pruebas, deberías ver que el sistema responde adecuadamente bajo autenticación, mientras bloquea los acceso no autorizados.
  • Seguridad garantizada: Asegúrate de que cada método sólo sea accesible mediante token para proteger tu API.

Siempre que desarrolles o ajustes una API, practicar y evaluar los resultados es crucial. Compártenos tus experiencias o dudas. En tu camino hacia la maestría en tecnología, cada paso cuenta. ¡Ánimo y sigue adelante!