2011-05-08 34 views
14

Realmente estoy tratando de agradar DotNetOpenAuth, una biblioteca OpenID, OAuth para .Net, pero realmente no me sirve.
En primer lugar, parece que no funciona en mono (los ejemplos fallan con error web.config u otros errores).
En segundo lugar, no necesito el 99% de las características de la biblioteca, todo lo que quiero es algo simple que se ocupe de OpenId/OAuth uso del cliente complejidad para mí. No necesito escribir un servidor OpenId — Solo quiero que mis usuarios hagan clic en el botón "iniciar sesión con Google" :-)¿Hay alguna alternativa mejor a DotNetOpenAuth?

Todo lo que quiero hacer es tener un conjunto de botones para que los usuarios inicien sesión mi sitio web con (cualquiera es agradable, los tres bono):

  • Facebook (no soporta OAuth, por lo que es poco probable)
  • Twitter
  • Google

¿Hay alguna simples, utilizables alternativas que me dan algo como:

  1. Una caída en fragmento o componente para poner en páginas
  2. Lo ideal sería simplemente establecidos HttpContext.Current.User
  3. Integración con membresía — Básicamente utilizando membresía para rastrear quién estaba en el sitio antes.

?

+0

Estoy dudando de que encontrará una respuesta "simple" a esto, ya que independientemente de lo que usted termina con, será un envoltorio sobre una API bastante complejo.Una palabra de advertencia: Facebook [no es compatible] (http://stackoverflow.com/questions/1827997/is-facebook-an-openid-provider) OpenId, por lo que cualquier solución que admita los tres proveedores mencionados anteriormente no será trivial. –

+0

¿Has probado la rama mono de DNOA: https://github.com/AArnott/dotnetopenid/tree/mono2 – SztupY

+0

@szt Lamentablemente ni siquiera compila, porque de hecho * tiene detalles específicos de Windows * ... :-( – Sklivvz

Respuesta

1

No es exactamente una alternativa a DotNetOpenAuth, aunque creo que podría ser útil para usted. Para resolver un problema similar, solo necesitaba una simple pantalla OpenID de inicio de sesión. Encontré openid-selector. Tienen varios ejemplos muy simples (pueden usarse las bibliotecas jQuery, MooTools y prototype) cómo configurar la página de inicio de sesión similar a la desbordamiento de la pila.

2

Hace un año parcheé la rama real de mono2 de DNOA. Es realmente viejo, pero funciona (solo intenté con la parte de OpenID), y todavía la utilizo para algunos proyectos. No conocía la rama Mono 2 actual sigue siendo inutilizables :(

https://github.com/sztupy/dotnetopenid

7

(auto-admitido alerta sesgo: autor de DotNetOpenAuth)

DotNetOpenAuth tiene un par de ramas mono que puede trabajar, y tienen funcionó en el pasado. Es posible que no contenga compilación en mono en Linux, pero esas ramas, cuando se compilan en Windows, producen un dotnetopenauth.dll que debería poder ejecutarse bajo Linux. Pero ha pasado un tiempo desde que Lo he hecho yo mismo, así que no puedo ayudarte mucho.

Mono no ha mostrado mucho deseo de reparar los errores y rellenar los orificios característicos con los que se topa DotNetOpenAuth cuando se lo transporta a mono, por lo que estas ramas mono son bastante antiguas.

Quería decir que su comentario "todo lo que necesito es un cliente simple, no el proveedor" parece peligrosamente mal informado. Ningún cliente OpenID o OAuth 1.0 es simple. Hacer las cosas bien y de forma segura es en realidad un trabajo muy importante.Además, una vez que tiene el lado del cliente (RP) totalmente compatible y seguro, agregar el lado del servidor (Proveedor) es en realidad una adición muy pequeña, ya que RP y OP pueden compartir tanto código.

Así que sí, DotNetOpenAuth admite más escenarios de los que necesita. Pero no la mayoría de las bibliotecas? Por favor, eche un vistazo al An argument for the extra dependency of a library.

Y deje una nota a los desarrolladores de mono solicitándoles que arreglen los errores y llenen los orificios de características en mono para que DotNetOpenAuth funcione mejor en él. Los he preguntado repetidamente, pero creo que necesitan escuchar a más desarrolladores que lo soliciten.

+4

Creo que debe tomar la crítica con calma. No hay exactamente ningún ejemplo básico. Todo usa oauth lingo. La biblioteca necesita implementar soluciones. para mono. Lléveselo a casa y mejore la biblioteca :-) además de eso, esto no es una respuesta a mi pregunta ... ;-) – Sklivvz

+2

No me he sentido ofendido por sus críticas. Pero StackOverflow no es un foro para criticar de todos modos, y su pregunta está a mitad de camino, después de muchas de sus quejas que probablemente podrían ser direcciones enviando por correo electrónico la lista de correo o problemas de archivo en el sitio web del proyecto. Me parece divertido que me diga que me lo lleve a casa y lo mejore, cuando se trata de un proyecto de código abierto que puede mejorarse a sí mismo y, sin embargo, no ha donado nada (AFAIK) usted mismo. Deja de quejarte y ayúdate a ti mismo. No tengo ni necesito soporte mono, así que alguien que lo haga (¡usted!) Debería "llevarlo a su casa y mejorarlo". –

+0

como mejor le parezca, tampoco necesito DNOA ... Y todo el atractivo de una biblioteca de este tipo es el soporte inmediato, falta eso ... en realidad no. – Sklivvz

2

Al desarrollar mi propio proveedor, probé alrededor de 5 bibliotecas diferentes antes de establecerme en DotNetOpenAuth y realmente me dio los mejores resultados. Un problema con OpenID es que los RP y las IP a veces tienen un poco de dificultad para comunicarse debido a cuán variadas pueden ser las implementaciones. Mi primer intento con una biblioteca diferente resultó en OpenID que solo funcionaba en aproximadamente el 50% de los sitios en los que lo probé. DotNetOpenAuth trabajó en aproximadamente el 90%. Esperaría paralelos de rendimiento similares al probar esto desde el lado de la Parte que Confía. Una alternativa que podrías mirar es el RPX de Janrain, que también es de alta calidad.

4

Me encuentro en esta misma situación. Las librerías OAuth para otras plataformas (por ejemplo, Python) son mucho más simples y elegantes, y parecen encapsular gran parte de la complejidad en OAuth, por lo que desde la perspectiva del cliente son solo unas pocas líneas de código (que es la marca de un diseño biblioteca, en mi humilde opinión).

Finalmente me decidí por Hammock, una biblioteca que ayuda a consumir API relajadas, incluida la compatibilidad con OAuth 1.0A.

2

Identity Server (IdSrv)

OpenID Connect y OAuth 2.0 Marco para ASP.NET Core

Fuente: https://github.com/IdentityServer

Ver este vídeo de introducción https://vimeo.com/154172925

Microso ft AspNet.Security.OpenIdConnect.Server (ASOS)

AspNet.Security.OpenIdConnect.Server es un/OpenID marco servidor avanzado OAuth2 Connect para ambos ASP.NET Core 1,0 (conocido previamente como ASP.NET 5) y OWIN/Katana, diseñado para ofrecer un primer enfoque de protocolo de bajo nivel, .

Fuente: https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server

OpenIddict

OpenIddict tiene como objetivo proporcionar una solución simple y fácil de usar para implementar un servidor de OpenID Connect en cualquier aplicación ASP.NET Core.

Fuente: https://github.com/openiddict/openiddict-core

Cuestiones relacionadas