De la mayoría de las lecturas que he hecho en OpenID, parece que se requiere un navegador. Estoy escribiendo una aplicación WCF y quería utilizar OpenID como método de autenticación, pero mi aplicación no es una aplicación web. ¿Es posible usar WCF y OpenID juntos sin requerir un navegador web?Usando OpenID con WCF y sin navegador, ¿es posible?
Respuesta
Mientras OpenID puede tout en su independencia de especificaciones de las cookies y tal porque la especificación en realidad no ordena cómo se usan esas cosas, en realidad nunca he visto una buena solución OpenID para nada además de iniciar sesión en un sitio web, que es realmente su caso de uso principal.
Sin embargo, hay una buena manera de hacerlo y seguir usando WCF y OpenID. Agregue OAuth a la mezcla. La biblioteca DotNetOpenAuth tiene un ejemplo que muestra cómo un cliente WCF puede obtener autorización para llamar a un servicio WCF a través de OAuth, donde en el lado del servicio el usuario usa OpenID para iniciar sesión como parte del proceso de autorización.
Así que, básicamente, si WCF aplicación necesita a "conectarse" con el fin de llamar al servicio de WCF, como parte de una configuración de una sola vez:
- La aplicación aparece un navegador en el que el usuario ve la Sitio web del servicio WCF (el proveedor de servicios OAuth)
- El usuario inicia sesión con su OpenID (aunque es posible que el usuario ya haya iniciado sesión, en cuyo caso puede omitir este paso)
- El OAuth SP le pregunta al usuario "do ¿Desea autorizar esta [aplicación wcf] para acceder a este sitio? "
- El usuario dice que sí y cierra el navegador.
- La aplicación WCF ahora tiene acceso, gracias al protocolo OAuth, al servicio WCF.
Esto funciona porque entre bastidores, cuando el usuario dice "sí" al servicio a través del navegador web, se asigna una credencial amigable para la máquina a la aplicación WCF, que utiliza con cada servicio WCF. una forma similar de un nombre de usuario/contraseña.
Consulte la biblioteca DotNetOpenAuth. Tiene la muestra y todo lo que necesitas para que funcione.
Esta publicación fue muy perspicaz, ¡gracias! Echaré un vistazo a DotNetOpenAuth. –
De la lectura de la OpenID Authentication 2.0 Specification, que parecen haber llegado a una respuesta:
Aunque nada en el protocolo requiere JavaScript o navegadores modernos, el esquema de autenticación juega muy bien con "Ajax" al estilo de configuraciones. Esto significa que un usuario final puede probar su identidad a una Parte que confía sin tener que abandonar su página web actual.
La autenticación OpenID utiliza solo solicitudes y respuestas HTTP (S) estándar, por lo que no requiere ninguna capacidad especial del User-Agent u otro software cliente. OpenID no está ligado al uso de cookies ni a ningún otro mecanismo específico de la administración de sesión de la Parte que confía o del proveedor de OpenID. Las extensiones a User-Agents pueden simplificar la interacción del usuario final, aunque no es necesario que utilicen el protocolo.
Ahora sólo hay que encontrar una forma inteligente de conseguir que funcione con un usuario de confianza basados en WCF ...
Tome OpenIdMembershipProvider (tal vez existen otros). Then configure Message security in WCF, with Username authentication, then you can use the ASPNET MembershipProvider to authenticate your user. No creo que pueda encontrar una solución más fácil;)
Esto suena muy simple. No se requiere interacción con el navegador? –
No se requiere interacción con el navegador, pero no sé cómo usar este proveedor, tal vez tenga algunas dependencias en ASP.NET que lo hagan activar el modo de compatibilidad. ver: http://msdn.microsoft.com/en-us/library/aa702682.aspx Hay varios OpenIDMembershipProvider que existen, no probé ninguno de ellos. Suponiendo que funcionen como se esperaba, solo tiene que "enchufar" su openIdMembershipProvider, y luego decir WCF para usarlo para autenticar las solicitudes. –
- 1. Aplicación Appengine como proveedor OpenId. ¿Es posible?
- 2. ¿Es posible trabajar con jquery y Svg directamente (sin complementos)?
- 3. ¿Es posible CSRF sin cookies?
- 4. Usando OpenID con PhoneGap y Windows Phone 7
- 5. ¿Usando el navegador sin cabeza Node.js con híbrido de selenio?
- 6. ¿Es posible distribuir usando Testflight y crashreport con crashlytics?
- 7. ¿Es posible trabajar con OrientDB usando C#?
- 8. ¿Es posible tener DataMembers opcionales en WCF?
- 9. ¿Es posible convertir una SoapException en una FaultException con WCF?
- 10. ¿Es posible serializar objetos sin un constructor sin parámetros en WCF?
- 11. ¿Es posible arrastrar y soltar contenido entre dos ventanas del navegador usando JQuery u otro método?
- 12. ¿Es posible leer archivos FTP sin escribirlos usando Python?
- 13. .NET - ¿Es posible usar ASP.NET sin MVC usando HTML 5?
- 14. ¿Es posible combinar llamadas en WCF?
- 15. Sesiones WCF con un wsHttpBinding y sin seguridad de Windows
- 16. Imagen con el navegador sin guardar
- 17. Codeigniter, OpenID y .htaccess
- 18. ¿Cómo distinguir/identificar usuarios con OpenID sin solicitar campos SReg?
- 19. Acceso sin navegador a LinkedIn con Python
- 20. usando protocolo UDP con WCF
- 21. Convenciones de nomenclatura con servicio web/WCF y sin sobrecarga
- 22. Rails, OpenID y Authlogic
- 23. ¿Es posible reiniciar una PC usando .NET "puro" y * sin * usar p/invoke?
- 24. OpenID y Iframes
- 25. ¿Es posible ocultar el navegador en Selenium RC?
- 26. WCF sin NET 3.0
- 27. comunicación WCF con varios clientes sin IIS
- 28. Usando OpenID cómo maneja 2 cuentas con el mismo nick
- 29. Usando un Servicio WCF con Entity Framework 4 y ... ¿DTO?
- 30. usando OpenID para demostrar la pertenencia Stackoverflow
Lo siento por este último comentario. Pero con "sin navegador", ¿quiere decir que muestra su propia ventana de inicio de sesión y permite que los usuarios ingresen su nombre de usuario y contraseña de Google, por ejemplo? Si fuera un usuario, NUNCA entregaría mi usuario/contraseña de esa manera. –