Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel
Code

Cómo proteger una API REST con Lumen

by
Difficulty:IntermediateLength:ShortLanguages:

Spanish (Español) translation by Elías Nicolás (you can also view the original English article)

Lumen es el hermano pequeño de Laravel: un micro-framework rápido y ligero para escribir APIs RESTful. Con sólo un poco de código, puede usar Lumen para crear una API RESTful segura y extremadamente rápida.

En este tutorial en video de mi curso, Cree una API REST con Lumen, aprenderá a usar el middleware de autenticación integrado de Lumen para asegurar una API REST con Lumen.

El video se refiere al código de una API de ejemplo de tienda de música que creamos en lecciones anteriores del curso. Puede ver el código fuente completo del curso en GitHub.

Cómo proteger una API REST con Lumen

Autenticación en Lumen

La seguridad es una parte muy importante no sólo de una API web sino de una aplicación. Y desafortunadamente, la implementación de la autenticación puede ser algo difícil. Pero afortunadamente, la autenticación está incorporada en Lumen, de modo que todo lo que necesitamos hacer es habilitar la autenticación y luego escribir unas pocas líneas de código para autenticar un usuario y luego unas líneas más de código para proteger las cosas que queremos proteger.

En nuestro ejemplo, queremos proteger tres métodos en su controlador de guitarra. Son los métodos de creación, actualización y eliminación. Estas son las cosas que sólo un usuario autenticado debe tener acceso.

guitar controller

Así que vamos a empezar por ir a la carpeta bootstrap y la apertura de app.php.

appphp

Hay dos declaraciones que necesitamos descomentar. La primera es la llamada a routeMiddleware, que está configurando el middleware de autenticación. También queremos registrar el proveedor de servicios de autenticación. Así que la segunda sentencia es $app->register(App\Providers\AuthServiceProvider::class);. Simplemente, al descomentar esas dos sentencias, ahora podemos usar la autenticación en nuestra aplicación.

Now we want to make note of our authentication middleware. Así que vamos a App\Http\Middleware\Authenticate.php, y dentro de esta clase hay un método llamado handle, y este método se ejecutará antes de nuestros métodos protegidos.

handle method

Así que cada vez que hacemos una solicitud para nuestros métodos de creación, actualización o eliminación, el middleware de autenticación se va a utilizar, y este método handle va a ser llamado.

Si el usuario no está autenticado, entonces devolverá un 401. De lo contrario, pasará la solicitud a la siguiente cosa que procesará esa solicitud.

Así que eso es una cosa que necesitábamos mirar. El otro está dentro de la carpeta Providers , y es AuthServiceProvider.php.

AuthServiceProvider

Ahora en la parte inferior de este archivo es un método llamado boot, y dentro de arranque es una llamada a este método viaRequest. Y este es el método que es responsable de autenticar al usuario. Así que esto va a depender de nuestra implementación. Y en esta lección, nuestra implementación va a ser muy simple.

Lo que vamos a hacer es buscar una cabecera llamada Api-Token. Y si es un cierto valor, entonces vamos a decir que el usuario está autenticado. Para decir que un usuario es autenticado, tenemos que devolver una instancia de usuario. Si devolvemos null, entonces significa que el usuario no está autenticado.

Así que vamos a seguir adelante y escribir ese código. Voy a comentar este código existente. Y lo primero que vamos a hacer es recuperar el encabezado Api-Token. Así que vamos a utilizar nuestra request, vamos a llamar al método de encabezado, y queremos Api-Token.

Ahora, permítanme en primer lugar decir que esto no es seguro. Definitivamente queremos almacenar a nuestros usuarios en una base de datos. Ellos deben tener sus propias fichas únicas y realmente deberíamos estar trabajando con claves privadas y públicas. Pero voy a dejar todos los detalles de implementación a usted. Lo que queremos ver es cómo el middleware de autenticación se conecta a nuestra aplicación para que podamos conseguir que funcione y, a continuación, puede implementar lo que sea que desee implementar.

Así que vamos a recuperar el encabezado llamado Api-Token. Y primero comprobemos si tenemos algo allí.

code to check to see if we have something there

Ahora, la única otra cosa que debemos hacer es decir dónde queremos usar nuestro middleware de autenticación. Podemos hacer eso en una variedad de lugares.

La primera es cuando definimos nuestras rutas. Por ejemplo, queremos proteger nuestra solicitud de correos. Así que en lugar de escribir nuestra ruta como lo hicimos, podríamos hacer esto. Es esencialmente la misma cosa, pero el segundo argumento que pasamos al método post va a tener dos claves y valores.

Así que sin ir más lejos, podríamos ir a Fiddler y podemos hacer una solicitud de correos y podríamos ver si eso sería protegido.

Ahora una de las grandes cosas sobre Fiddler es que hace un seguimiento de todas las solicitudes que hemos hecho. Así que solo necesitamos encontrar dónde hicimos una solicitud POST. Y si intentamos ejecutar esto, obtendremos un 401. Pero si incluimos esa cabecera de Api-Token, y si ponemos eso a "las aves vuelan hacia el sur", entonces cada vez que hagamos esta solicitud tendremos un 200, y ya sabemos que esos datos están ahora en la base de datos.

Así que esa es la primera opción. Pero la segunda opción es especificar nuestro middleware dentro del constructor de nuestro controlador. Así que vamos a comentar el código que acabamos de escribir y en su lugar utilizar nuestra ruta vieja.

Old route

Vamos a nuestro controlador de guitarra y añada el siguiente código:

guitar controller

Así que si volvemos a Fiddler y si emitimos la misma petición—cambiemos el valor a un strat y el make a Fender—entonces vamos a ver que todavía funciona. Así que cuando ejecutamos esa petición, obtenemos un 200. Si sacamos el Api-Token, entonces obtendremos un 401.

Ahora vamos a publicar algunas de las otras peticiones. Así que vamos a hacer una solicitud GET para que podamos recuperar esas guitarras y obtener sus identificaciones. Vamos a deshacernos de Api-Token sólo para que podamos ver que esto funciona sin ningún tipo de autenticación. Y obtenemos ID de 1 e ID de 2.

Así que si volvemos al composer, hagamos una solicitud PUT para la guitarra con el ID de 2.

Para los datos que vamos a enviar, la marca va a ser Fender, pero vamos a cambiar el modelo de un strat a un telecaster. Ahora, sin el Api-Token, esto no debería funcionar. Así que cuando ejecutamos, obtenemos un 401. Pero vamos a agregar el Api-Token y luego el valor, los pájaros vuelan hacia el sur, y esa petición va a regresar 200.

Por el motivo de hacerlo completo, hagamos una petición DELETE. Vamos a borrar la guitarra con un ID de 1. Debemos obtener 200, y vamos a volver a emitir la solicitud para recuperar todas nuestras guitarras. Y deberíamos tener uno, y debería tener un ID de 2. La marca es Fender, y el modelo es telecaster.

Así que agregar autenticación a una aplicación Lumen es muy, muy simple. Aparte de agregar el middleware, la mayor parte del código que tiene que escribir está dentro de la clase AuthServiceProvider. Tienes que escribir el código responsable de autenticar al usuario, pero una vez hecho esto, tienes una API segura.

Vea el curso completo

En el curso completo, cree una API REST Con Lumen, le mostraré cómo comenzar a crear APIs REST con el framework Lumen. Comenzarás por configurar un entorno de desarrollo Lumen y seguirás construyendo una API completa para una tienda de música, incluyendo enrutamiento, conectividad a bases de datos MySQL y seguridad.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.