Config.php donde definiremos los datos de conexión a la base de datos y el API Key que utilizaremos para validar el consumo del servicio. Este API Key puedes sustituirlo por un API Key en base de datos por cada cuenta o usuario de tu aplicación por medio de un método dentro del API. Este es el contenido de nuestro archivo Config.php:

Para generar el API Key puedes utilizar cualquier método de codificación. Para este ejemplo utilicé MD5() combinado con  uniqid() de PHP.

Indicaremos consultas a los headers o cabeceras de request e indicaremos la codificación charset que permita caracteres latinos o especiales como acentos, etc. Por último nos aseguraremos de que cualquier tipo de navegador web o cliente pueda acceder al API via P3P:

Luego, procederemos a cargar nuestro archivo de configuración para tener disponible cualqueir tipo de información como rutas, variables, constantes, etc., necesarias para el funcionamiento de nuestro API:

Nuestra segunda función authenticate(), nos permitirá validar la consulta a los métodos de nuestro API como una forma de seguridad y así garantizar que controlemos quien puede acceder y consumir el API partiendo de que hemos declarado un Access-Control-Allow-Origin:*. Esto es muy similar a como se utiliza cualquier API disponible como Facebook y Google. Este API KEY puede ser sustituido por un valor de una base de datos si deseas utilizar acceso controlado o RBAC en tu API.

Como podemos ver, a la función echoResponse() le pasamos solo un valor de $route, que es un método reservado de Slim Framwork que es definido para la ruta de acceso o endpoint que se consumirá. Por ejemplo, http://localhost/restapi/v1/auto, siendo /auto nuestro endpoint o método de consumo. Capturamos las cabeceras o headers, en este caso apache_request_headers() ya que estamos utilizando Wamp o cualquier otro paquete de desarrollo *AMP (LAMP, WAMP).

Continua leyendo «Seguridad RESTful API»

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *