security - sociales - ¿Cómo están autentificando/autorizando Facebook sus clientes nativos oficiales?
meta tags para redes sociales (1)
Vamos a seguir con Facebook para este ejemplo.
Estoy asumiendo que FB usa sus propias API públicas (así como las internas, que solo ellos pueden usar), y como están usando OAuth 2, sería seguro asumir que tienen "registros de clientes especiales" con permiso para usar el ¿Propietario del recurso Contraseña Credencial Grant ?
Como sabrás, cuando inicies sesión en Facebook desde sus propias aplicaciones oficiales , no abren un navegador y te preguntan si le permites a Facebook usar Facebook , así que si ellos mismos usan OAuth, ¿cómo lo hacen de manera segura?
Todos hemos leído que a Twitter se les filtró la llave de los consumidores , ¿cómo está evitando esto Facebook?
No soy un experto en seguridad, ni tengo experiencia en ingeniería inversa, solo estoy en una situación en la que debo implementar un servidor de autorización OAuth, y deseamos exponer nuestros API a terceros, pero como nosotros mismos tenemos "oficial aplicaciones nativas ", nos gustaría usar la concesión de la Credencial de contraseña del propietario del recurso para la mejor experiencia de usuario.
De acuerdo con la especificación OAuth 2 , las aplicaciones nativas no deben incluir los secretos del cliente, pero ¿cómo mejora eso las cosas? La forma en que lo veo, si no incluye el secreto, y su ID de cliente se extrae y se usa para otorgar contraseñas, la única forma de revocarlo es eliminando completamente la ID de cliente de su servidor de autorización.
¿Me estoy perdiendo algo obvio aquí? ¿Cómo hacen esto los "chicos grandes"?
La gran diferencia es que la aplicación oficial de Facebook conoce su nombre de usuario y contraseña y, por lo tanto, no necesita abrir un navegador, ya que se pueden autenticar directamente.
Como una aplicación de terceros, no puedo (ok, podría, pero por razones de privacidad no) pedir el correo electrónico y la contraseña de los usuarios. Como aplicación oficial, puede hacer esto y, por lo tanto, realizar un inicio de sesión directamente (esto puede suceder a través de un punto final REST no documentado)