Vine aquí con un problema de lucha. Administramos un sitio web de medios sociales, donde las personas pueden registrarse mediante el inicio de sesión clásico (puede ser su correo electrónico o su nombre de usuario) y el formulario de contraseña, pero también utilizando un Facebook Connect.
Cuando un usuario elige la segunda opción, le solicitamos su autorización para conectarse a FB Auth y luego FB nos da algunos detalles, ya que hoy utilizamos el correo electrónico registrado en Facebook como inicio de sesión y su ID de Facebook como contraseña.
Cuando vimos que podíamos cambiar nuestra dirección de correo electrónico principal en fb, sabíamos que teníamos que cambiar nuestra forma de conectarlos. Así que pensamos en enviar su ID de FB para autenticar al usuario.
Para evitar cualquier problema de rastreo, agregamos un certificado SSL. Pero aún tenemos un problema: incluso con la minificación en nuestra aplicación angular, un usuario puede saber con una pequeña investigación que para autenticar su propio servicio a nuestro servicio, "simplemente" debe conocer su identificación y enviarla con el cartero. / p>
Entonces, si puede obtener el ID de Facebook de otro usuario (que incluso podría haberse filtrado o vendido en otro sitio web), podría usar Postman para autenticarse como otro usuario.
¿Cómo puedo asegurar este proceso?
Pensamos en usar criptografía asimétrica donde el cliente cifraría la ID con la clave de pub y el servidor la descifraría con clave privada. Pero después de todo, no parece solucionar el problema.