net con accesstoken openid facebook

accesstoken - Facebook-connect o OpenID? Desde la perspectiva de un desarrollador.



login facebook website (3)

¿Has mirado en Google Friend Connect ? Es similar a Facebook Connect, pero está basado en Open ID, por lo que no es totalmente propietario de Google. También parece resolver los problemas de experiencia de usuario de Open ID.

rpxnow.com también hace un buen trabajo resolviendo el problema de la experiencia de usuario de Open ID.

Recientemente me contrataron para trabajar en una aplicación que requiere Facebook-Connect como uno de sus mecanismos de autenticación.

Al trabajar en mi solución de Facebook Connect, me doy cuenta de que está implementando un esquema de autenticación de inicio de sesión único, donde si inicia sesión en un sitio web, inicia sesión en todos ellos. Personalmente, no me gusta el enfoque y encuentro que es difícil (no imposible) trabajar con él cuando se trata de canalizar todos los sistemas de autenticación a través de un proceso único sobre el que usted (el desarrollador) tiene cierto control. También creo que introduce problemas de seguridad innecesarios (ver Riesgos de la implementación de Internet) solo para mejorar ligeramente la experiencia del usuario.

Al investigar estrategias para trabajar con la tecnología, me he dado cuenta de que la blogósfera tiene casi ungido a Facebook-Connect como el santo grial de la autenticación, haciéndose eco de las opiniones de los demás y clamando alto y fuerte de que "OpenID es demasiado complicado". Al mismo tiempo, no he visto a muchos desarrolladores prominentes y expertos en seguridad elevar banderas o expresar sus opiniones al respecto. Mi única experiencia con OpenID es con StackOverflow y sitios relacionados. Al principio también me costó entender lo que era, pero una vez que me di cuenta de que podía iniciar sesión con mis credenciales de Google, la experiencia resultó ser realmente fluida.

¿Estoy siendo paranoico o me falta algo que todos tienen? ¿Es Facebook-Connect realmente una mejor alternativa a OpenID, o todo el mundo está bebiendo Kool Aid de alguien?

EDITAR:

Después de trabajar en esto, confirmo que el esquema de inicio de sesión de Facebook Connect no es ideal. Todo el asunto del iframe / js / cookie / recargar es feo y puede volverse problemático fácilmente. La integración del inicio de sesión de fb en un sistema de autenticación existente es un ejercicio en sí mismo. Tendrás que hacer algunos compromisos. Tendría que escribir otro artículo para explicar cómo lo hice.

Facebook me parece un poco obsesionado con el inicio de sesión único para mí. La mayoría de las personas no saben que Facebook tiene OpenID habilitado para su propio sitio, pero incluso la forma en que lo implementaron es emular SSO y lo hace un poco inútil. La forma en que pensé que OpenID debe funcionar: usted va a un sitio web nuevo, si tiene una cuenta OpenId, ingrese la url, ingrese a su proveedor y ya está listo. Luego puede continuar para completar la información adicional.

Fb no le ofrece el inicio de sesión de OpenID por adelantado. En su lugar, primero debe registrarse e iniciar sesión, luego ir a Configuración de la cuenta y en Cuentas vinculadas, elija un proveedor de OpenID. Sin embargo, a diferencia de StackOverflow que entiende el punto, Facebook solo le permite iniciar sesión con su OpenID, si le indica a su proveedor que recuerde esa configuración. ¿Por qué? Lo hace más parecido a un SSO. Si no marca la casilla de Google que pide recordar, OpenID no funciona en Facebook.

Dejando de lado el inicio de sesión, Facebook Connect funciona en general, pero todavía hay muchos rincones que redondear. Algunas cosas que me hicieron tirar de mi pelo y maldecir a esa api:

  • La documentación de Facebook está dispersa y no se ha simplificado correctamente. Dentro de la primera hora de apertura, tendrá al menos 10 pestañas abiertas en su navegador. Si / cuando te topas con temas interesantes que crees que podrían ser útiles en el futuro, asegúrate de marcarlos correctamente, no confíes en las navegaciones para volver a encontrarlos porque a veces los artículos clave están profundamente ocultos. Sé que el enfoque wiki para documentar los api ha hecho que muchos proyectos sean perezosos últimamente, pero en general, este es Facebook. Deben tener los medios para contratar un equipo para proporcionar guías de usuario adecuadas. Por lo tanto, recuerda tener una buena carpeta de marcadores de Facebook antes de comenzar.
  • Hay muchos métodos en la API, buena suerte encontrando un ejemplo de cómo usarlos, tienes que confiar en el instinto.
  • muchas veces, cuando algo no funciona como deseas, nadie sabe por qué. Al visitar las páginas del foro, las explicaciones se dan en forma de hipótesis y rumores. por ejemplo, en el inicio de sesión, ¿por qué algunas aplicaciones tienen ventanas de inicio de sesión emergentes cuando otras tienen un diálogo js modal? ¿Es posible controlar ese comportamiento? nadie esta seguro Se rumorea que Facebook está realizando algunas pruebas sin avisar a nadie.
  • No todo funciona como se anuncia. es decir, es posible que se le aliente a usar una función, perder un tiempo valioso aprendiéndola, implementándola, depurándola, y luego solo descubra que no funciona con facebook-connect cuando la coloca dentro de un controlador de excepciones de prueba / captura. por ejemplo, feed.publishUserAction .
  • Facebook intenta demasiado ser fácil de usar. Ellos malgastan recursos valiosos al empujar una api automágica que solo funciona la mitad del tiempo (xfbml), en lugar de alentar a los desarrolladores a aprovechar sus conocimientos adquiridos gracias al uso de elementos más básicos que funcionan la mayor parte del tiempo (pseudo sql + html). Por ejemplo, perdí el tiempo tratando de usar una combinación de ajax / xfbml / js para sacar fotos de amigos de su servidor. Funcionaría para un par de solicitudes y luego dejaría de funcionar por completo. Entonces decidí extraer los datos directamente de su base de datos utilizando su lenguaje de consulta de Facebook (fql) y crear mi propio marcado en html. Trabajó 100%. Mi consejo para ti es que si eres un verdadero desarrollador, no creas el mantra de que "todo es fácil" que Facebook intenta alimentar a todos, no lo es. Además de familiarizarse con la API del cliente de Facebook de su plataforma de programación (PHP, Python, Java, etc.), invierta en aprender lo que puede extraer de su servidor directamente usando fql y lo que puede hacer en el navegador con la API JS Client (no Para ser confundido con el fbjs). Es posible que descubras que las 2 últimas son todo lo que necesitas para hacer la mayoría de las cosas.

Estoy seguro de que la lista no termina ahí, pero desde lo alto de mi cabeza aquí está.


Advertencia: fuertes opiniones que siguen.

Sí, están bebiendo el Kool-Aid. Facebook Connect es un inicio de sesión único, dependiente del proveedor y más. Facebook se cae, o se considera indigno de confianza, y estás decidido.

OpenID pasa por alto eso. Actualmente, tiene problemas importantes de experiencia de usuario, pero a largo plazo es una mejor solución porque libera al sistema de la dependencia (y filtra todo el tráfico) a través de un solo proveedor. Además, su especificación e implementación parecen mucho más limpias, ninguna de estas cosas de JavaScript / IFrame. Simplemente peticiones HTTP simples y redirecciones. Esto también le da una compatibilidad mucho mejor con el navegador.

Facebook Connect solucionó el problema de la experiencia del usuario, pero a costa del soporte del navegador y la elección del proveedor. Es una victoria pragmática a corto plazo, pero creo que a largo plazo no es una buena idea.


El esquema de inicio de sesión único es bastante común ahora con las aplicaciones principales. Si inicia sesión en Gmail, ha iniciado sesión en todos los productos de Google. Creo que tiene sentido de alguna manera, especialmente si las aplicaciones están interconectadas, son un servicio importante y el proveedor tiene a la mejor gente de seguridad trabajando detrás de la escena.

Ahora, para OpenID, creo que también es una gran idea, pero OpenID todavía no es muy accesible. Se suponía que iba a revolucionar el inicio de sesión para sitios web más pequeños y medios, pero no lo hizo. Hay muchos sitios web que lo usan, pero aparentemente no son suficientes. La mayoría de los sitios web todavía usan sus propios esquemas de inicio de sesión, llámelos letargo o inquietud con un proveedor independiente.

Pero creo que tarde o temprano surgirá algo como OpenID, pero para que funcione se necesita un gran impulso detrás de ello. Alguien como Google.

Imagínese si pudiera iniciar sesión TAN con su ID de google.

Por ahora, creo que no debes sentirte incómodo con Facebook-Connect, pero recomiendo OpenID aunque no lo esté usando todavía :) ( letargo )