2011-05-20 19 views
5

Me gustaría usar OpenID para autenticar usuarios en mi aplicación web, similar a como lo hace StackExchange. También me gustaría permitir que los usuarios de mi sitio web utilicen mi Escritorio y aplicaciones móviles usando la misma cuenta. He leído que esto requiere OAuth (OpenID es solo un sitio web).OpenID + OAuth para la aplicación Webapp y Desktop/Mobile Autenticación y Autorización

Lo que no sé es

  • Es este el enfoque correcto?
  • ¿Cuál sería el flujo de trabajo para esto?
  • ¿Qué datos necesito en mi base de datos por usuario/OpenID? ¿Guardo una "cuenta" y luego, cuando se hayan autenticado con OpenID, les permito generar un Token OAuth para la aplicación móvil?

En un mundo ideal, me gustaría ser capaz de tener botones similares a los de https://stackoverflow.com/users/login tanto para mi aplicación web y también en mi escritorio y aplicaciones móviles que simplemente permite que los usuarios iniciar sesión con su cuenta de Google o Facebook, es eso posible? La simplicidad para los usuarios es primordial, porque mi base de usuarios no aceptará nada remotamente complejo.

¿Puedo usar algo como DotNetOpenAuth para proporcionar toda esta funcionalidad?

¿Sería una mejor solución romper esto y permitir a los usuarios autenticarse en mi sitio con OpenID y luego proporcionar mi propio esquema OAuth para mis clientes de escritorio y dispositivos móviles?

Respuesta

0

Este es el flujo de trabajo que se me ocurrió, y hasta el momento Creo que está funcionando bien.

El usuario debe autenticarse en el sitio web a través de un tercero OpenID/Facebook/etc (el sitio web amigable para dispositivos móviles está disponible). Luego, en su "perfil" pueden generar una "clave" API que pueden copiar/pegar en su software cliente. No es 100% transparente para el usuario, pero es bastante bueno.

+0

¿Usó OAuth o una solución de código personalizado para eso? – mcaaltuntas

+0

Sí, Facebook OAuth. – Nate

1

Probablemente el mecanismo más simple es incrustar una vista web, y simplemente mirar para la navegación a una página de devolución de llamada específica y tomar los datos de autenticación de esa manera. Todavía deberías poder usar OpenID para esto.

+0

brilliant! si inserta una vista web, puede obtener un token oauth de su sitio web y usar ese token para completar la autenticación. si tiene un ejemplo de trabajo, he publicado una recompensa (50 puntos) por este problema. http://stackoverflow.com/questions/11741575/android-app-webserver-api-using-federated-login-or-openid-without-gae/11822030#11822030 –

0

Lo que debe tener en cuenta es el Windows Identity Framework (WIF), funcionará de manera similar para las aplicaciones web o de escritorio que usen Identidad basada en notificaciones. Debería almacenar un token de autorización para cada usuario (junto con cualquier otra información que necesite) y lo obtendría en el Encabezado de autorización de una Solicitud HTTP autenticada. oAuth es el protocolo para aprobar solicitudes de autorización y respuestas. WIF es un .NET toolkit para simplificar esta interacción.

Para obtener más información, echa un vistazo a la página principal de WIF y el blog siguiente (no la mía):

http://msdn.microsoft.com/en-us/security/aa570351

http://blogs.msdn.com/b/vbertocci/

+0

Me pierdo por completo en esas páginas :-) Eres tú Seguro que vale la pena No puedo encontrar ninguna referencia a nadie que use WIF para autenticar a los usuarios con OpenID. – Cilvic

Cuestiones relacionadas