Seguridad inicial para las rutas API en Laravel con api_key

Aprenderemos a asegurar nuestras rutas API de laravel por medio de un parámetro api_key como primera opción básica

Seguridad inicial para las rutas API en Laravel con api_key

En este artículo aprenderemos a asegurar la rutas API de Laravel por medio de un código de API_KEY similar a lo que hacer google para la seguridad de sus distintas APIS que libera a los desarrolladores.


<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" type="text/javascript">script>


En este caso utilizaremos esta verificación por medio de un middleware en Laravel, asi que para ello lo primero a realizar será crearlo por medio del comando:


php artisan make:middleware ApiKeyValidate


Luego dentro de esta clase que se ubica dentro de app/http/middleware añadiremos estas lineas de código:




namespace App\Http\Middleware;

use Closure;

class ApiKeyValidate
{
  /**
   * Handle an incoming request.
   *
   * @param \Illuminate\Http\Request $request
   * @param \Closure $next
   * @return mixed
   */
  public function handle($request, Closure $next)
  {
    if (!$request->has("api_key")) {
      return response()->json([
        'status' => 401,
        'message' => 'Acceso no autorizado',
      ], 401);
    }

    if ($request->has("api_key")) {
      $api_key = "key_cur_prod_fnPqT5xQEi5Vcb9wKwbCf65c3BjVGyBB";
      if ($request->input("api_key") != $api_key) {
        return response()->json([
          'status' => 401,
          'message' => 'Acceso no autorizado',
        ], 401);
      }
    }

    return $next($request);
  }
}


Este será nuestro API_KEY que deberemos de utilizar para poder hacer consultas a nuestras rutas de Laravel

key_cur_prod_fnPqT5xQEi5Vcb9wKwbCf65c3BjVGyBB


El siguiente paso es registrar nuestro middleware dentro del Kernel que se ubica dentro de la siguiente ruta app/http/Kernel.php, En este archivo agregaremos el Middleware en la parte final del array como apikey.validate


/**
   * The application's route middleware.
   *
   * These middleware may be assigned to groups or used individually.
   *
   * @var array
   */
  protected $routeMiddleware = [
    'auth'      => \Illuminate\Auth\Middleware\Authenticate::class,
    'auth.basic'   => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings'    => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    'cache.headers'  => \Illuminate\Http\Middleware\SetCacheHeaders::class,
    'can'       => \Illuminate\Auth\Middleware\Authorize::class,
    'guest'      => \App\Http\Middleware\RedirectIfAuthenticated::class,
    'signed'     => \Illuminate\Routing\Middleware\ValidateSignature::class,
    'throttle'    => \Illuminate\Routing\Middleware\ThrottleRequests::class,

    'apikey.validate' => \App\Http\Middleware\ApiKeyValidate::class,
  ];


Para finalizar aplicaremos el middleware en nuestras rutas que hemos creado ya sea dentro del archivo routes/api.php o routes/web.php por medio de un Route::group




/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
 */

Route::group(["middleware" => "apikey.validate"], function () {

  //Rutas
  Route::post("login", "Api\UserController@postLogin");
  Route::get("cursos", "Api\CursoController@getCursos");

});


Finalmente si hacemos una consulta a la ruta sin colocar el api_key al final esta nos retornará el mensaje de acceso no autorizado.



Pero si por el contrario colocamos el api_key al final como parámetro podremos hacer la consulta a la ruta sin problemas.



Bien, gracias por haber leído este post hasta el final, si tienes algunas ideas para los próximos artículos, déjanos en los comentarios.



Compartir:
Contact Person

marco antonio

1 mes antes

Seguridad con JWT


Usuario cursania

Cursania

1 mes antes

Pronto estaremos escribiendo un post sobre eso estimado

Contact Person

teksuox

2 meses antes

muy bueno gracias, una consulta no tendrias una con api passport o jwk gracias ..


Usuario cursania

Cursania

1 mes antes

Aun no tenemos estamos por escribir el POST

Tutor

Tutor
Cesar Alan
Desarrollador de Software

Post Relacionados

Cargar imágenes con PHP y Ajax

Aprende a desarrollar un formulario con el cual podrás cargar imagenes con ajax y php al servidor


Envio de formulario por Ajax

Descubre como enviar datos por ajax de manera sencilla y segura


Conexión a MySQL con PDO en PHP

Aprende prácticamente a conectarte a una base de datos MySQL con la extension PDO en PHP


Calificación

4.5

5 Comentarios
Comentar ahora