s_coco
04/12/19, 02:45:49
Buenas, ya he hecho otras aplicaciones para Android, pero nunca he tenido que preocuparme por la seguridad hasta ahora. He encontrado tutoriales y he añadido Google Auth pero a partir de ahí me pierdo y necesito un poco de ayuda.
Cliente -> Android puro
Servidor -> RESTFUL PHP
Para el login uso la cuenta de google con Firebase. Cuando lanzo la aplicación Android, Firebase me devuelve un token con la información del usuario, una fecha y una fecha de expiración (1 hora). Ese token lo envío a mi servidor para validar.
A partir de aquí no tengo claro como realizar la comunicación segura:
1º - En cada petición https del cliente al servidor enviar el token de Firebase para que el servidor lo decodifique, compruebe la identidad y que no haya expirado. Para decodificar el token debo recoger las claves públicas proporcionadas por Google en una url, además recibes 2 claves y debes probar para dar con la buena, me parece algo excesivo si el servidor recibe muchas consultas. En esta app envío texto y archivos al servidor, pero la siguiente necesita de mensajería, así que tendré una petición por cada mensaje, y eso son muchas muchas peticiones.
2º - Cuando mi servidor reciba el token de Firebase (login) debe devolver un nuevo token (generado por el servidor) que el cliente debe enviar en cada petición https al servidor hasta que expire. En el servidor hay que decodificar el token pero no hacer consulta a google para recuperar las 2 claves.
No sé si alguno de estos 2 caminos es el correcto, en cualquier caso necesito que tras el login con Firebase la comunicación sea segura entre cliente y servidor.
Gracias de antemano.
Cliente -> Android puro
Servidor -> RESTFUL PHP
Para el login uso la cuenta de google con Firebase. Cuando lanzo la aplicación Android, Firebase me devuelve un token con la información del usuario, una fecha y una fecha de expiración (1 hora). Ese token lo envío a mi servidor para validar.
A partir de aquí no tengo claro como realizar la comunicación segura:
1º - En cada petición https del cliente al servidor enviar el token de Firebase para que el servidor lo decodifique, compruebe la identidad y que no haya expirado. Para decodificar el token debo recoger las claves públicas proporcionadas por Google en una url, además recibes 2 claves y debes probar para dar con la buena, me parece algo excesivo si el servidor recibe muchas consultas. En esta app envío texto y archivos al servidor, pero la siguiente necesita de mensajería, así que tendré una petición por cada mensaje, y eso son muchas muchas peticiones.
2º - Cuando mi servidor reciba el token de Firebase (login) debe devolver un nuevo token (generado por el servidor) que el cliente debe enviar en cada petición https al servidor hasta que expire. En el servidor hay que decodificar el token pero no hacer consulta a google para recuperar las 2 claves.
No sé si alguno de estos 2 caminos es el correcto, en cualquier caso necesito que tras el login con Firebase la comunicación sea segura entre cliente y servidor.
Gracias de antemano.