jesustorresdev / slack-badges-bot

2 stars 1 forks source link

Autenticación del acceso al API #20

Closed jesustorresdev closed 5 years ago

jesustorresdev commented 5 years ago

Hace falta asegurar que el acceso al API solo se realizar por persona autorizadas. Este API lo usa el cliente en línea de comandos.

En #6 se comenta la posibilidad de probar auth0 pero #19 abre una nueva posibilidad. Estos sería los elementos necesarios:

  1. El acceso al API debería ser por HTTPS. Podemos suponer que así para las pruebas:
  2. El servidor al arrancar puede generar un token random. En jupyter notebook se hace algo parecido y el token tiene un tamaño de 32bytes codificados luego en base 64. Este token solo queda en memoria (se supone que cambia si el servicio reinicia) pero se muestra por la consola durante el arranque con un pequeño texto indicando qué hacer. Con Jupyter el texto es algo así:

image

  1. Usando #19 el usuario puede configurar el token del acceso en el cliente. Algo como badge-cli config token <el token aquí>.
  2. El cliente al hacer las peticiones del API debe enviar el TOKEN. Lo adecuando es añadir la cabecera HTTP Authorization: Bearer <token>: https://security.stackexchange.com/questions/108662/why-is-bearer-required-before-the-token-in-authorization-header-in-a-http-re
  3. El servidor debe leer la cabecera Autorization de la request y comprobar el token. Puede ser buena idea tener un decorado que se encargue de eso, fuera del código del handler. Si no se tiene permiso hay que devolver error 403 (Forbidden)
mbdaso commented 5 years ago

Le puse SSL con certbot, y redirige todas las peticiones http a https

https://www.ssllabs.com/ssltest/analyze.html?d=vituin-chat.iaas.ull.es