Introducción
En este articulo explicamos el uso de Bearer token plugin para HapiJS.API publico o privado?
Un REST API recurso puede ser privado si por medio de routing lo podemos crear de uso exclusivo para una aplicacion de server. En este caso cada llamado debe ser de HapiJS UI server page a REST API. Dado que Rutha utiliza ambos, y nuestra aplicacion es un SPA (Single Page Application), la opcion de API privado no es factible. En este caso optamos por utilizar autenticacion a nivel de REST.Modelo ideal segun Twitter de autenticacion 'Application Only'
Segun Twitter, son tres pasos que se requieren:- Una aplicacion codifica la llave y secreto del usuario (consumer key and secret) en un set de credenciales. Esto es lo que adquieres en la mayoria de los OAuth APIs y el cual debes incluir en tus aplicaciones.
- Una aplicacion crea una llamada POST a un recurso o 'endpoint' OAuth2/token para intercambio de token (bearer token o token al portador).
- Para acceder al API REST, la aplicacion utiliza el token al portador para autenticar.
Usando HapiJS
En este ejemplo no explicaremos completame el flujo, solo nos enfocamos en el punto #3, en donde autenticamos llamados al API REST. El punto 1 y 2 para aplicaciones no publicas como Twitter, es posible con la autenticacion del usuario generar un token al portador permitiendo al usuario acceder el API REST que requiere ser autenticado.
En el bootloader de HapiJS
Registramos el plugin de 'hapi-auth-bearer-token' y la estrategia con validateFunc, que contiene la logica del token. Esto se puede reemplazar por un datastore en Redis o MongoDB que almacene la sesion, o algun otro metodo criptografico.Rutas
En las rutas, toda ruta que requiera previa autenticacion, le asignamos en config.auth el nombre de la estrategia a utilizar.
Consumidor del API
Finalmente, en el cliente nos aseguramos de enviar el header de autorizacion con el token al portador.
Hasta la siguiente entrega
Rogelio Morrell
No comments:
Post a Comment