social_django social_core google framework auth app python django openid google-openid

python - social_core - ¿Qué biblioteca de openid/oauth para conectar un proyecto de django a las cuentas de Google Apps?



social auth django google (5)

Estoy trabajando en un proyecto django de intranet (sin GAE) para una empresa que usa Google Apps para iniciar sesión. Por lo tanto, me gustaría que mis usuarios puedan iniciar sesión en mi proyecto django utilizando el inicio de sesión de sus cuentas de google. OpenID parece apropiado, aunque quizás Oauth también podría funcionar.

Veo muchas bibliotecas con nombres similares para conectar el sistema auth de django a sistemas externos de inicio de sesión:

Esto es lo que me gustaría hacer con la integración: hacer que los usuarios inicien sesión con sus cuentas de google, en lugar del sistema django nativo. Mantenga el modelo de permisos de django para cosas como el sistema de administración. Así que creo que eso significa crear automáticamente un nuevo registro de usuario en django la primera vez que una nueva cuenta que no hemos visto antes inicia sesión.

¿Alguien con experiencia en el uso de alguno de estos proyectos me puede aconsejar sobre cuál funcionaría mejor? ¿O solo consejos sobre cuáles son los más activos / funcionales si los has probado? ¡Gracias!


Finalmente conseguí que esto funcionara, así que responderé mi propia pregunta ya que las respuestas anteriores fueron útiles pero no cuentan toda la historia.

django-openid-auth es bastante fácil de configurar y usar. El archivo README es muy claro. Si solo desea utilizar cuentas de Google estándar (es decir, direcciones @ gmail.com), configúrelo en settings.py con:

OPENID_SSO_SERVER_URL = ''https://www.google.com/accounts/o8/id''

Pero si desea utilizar una cuenta de "aplicaciones de Google", es decir, gmail alojado en el dominio de su propia empresa, entonces es más complicado. Tengo mis detalles de esta pregunta . Para usar sus cuentas de Google Apps, configure su settings.py para:

OPENID_SSO_SERVER_URL = ''https://www.google.com/accounts/o8/site-xrds?hd=example.com'' # replace example.com with your hosted google apps domain

En el futuro esto podría funcionar, pero hoy probablemente no lo hará. El problema está en python-openid, en el que se basa django-openid-auth. La compilación estándar de python-openid no comprende algunas extensiones de protocolo que Google está usando. (¿Por qué Google necesita extender el protocolo? Excave a través de http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains y repórtelo. Buena suerte. ) Por lo tanto, debe utilizar el parche de adieu para python-openid, que está disponible aquí: http://github.com/adieu/python-openid

Instala esto sobre tu python-openid existente. Ahora debería funcionar.

Tenga cuidado con la configuración OPENID_USE_AS_ADMIN_LOGIN , ya que requiere que tenga una cuenta de usuario openid que sea ''staff'' o ''superuser'' para usar admin, lo que no ocurrirá de manera predeterminada. Por lo tanto, deberá realizar un proceso de 2 pasos para habilitar openid, iniciar sesión con su código abierto para crear una cuenta en django, luego usar su cuenta de administrador anterior para marcar su propia cuenta abierta como superusuario, y luego deshabilitar el administrador no abierto. acceso.

Una cosa más: el administrador de su dominio podría necesitar habilitar el inicio de sesión de openid para su dominio antes de que esto funcione. El control se encuentra en http://www.google.com/a/cpanel/example.com/SetupIdp


He usado django-openid-auth . Funciona bien, puede crear una cuenta de usuario al firmar por primera vez. También puede asociar el inicio de sesión de openid con la cuenta de usuario en el panel de administración de django.


Me gustó que el django-socialregistration me permitió conectar cuentas de Google, Facebook, Yahoo y cualquier otro sitio de OpenID con bastante facilidad. Solo necesitas darle al proveedor un enlace así:

<a href="/socialregistration/openid/redirect/?openid_provider={{ ''http://yahoo.com''|urlencode }}"><img src="{{MEDIA_URL}}/images/yahoo.png"/></a>


Sé que esta es una respuesta tardía, pero estoy haciendo cosas similares y acabo de descubrir django-socialregistration . que básicamente hace OAuth, OpenID, Facebook Connect, etc. A diferencia de algunas de las otras opciones, parece que está siendo desarrollado y utilizado activamente por muchos proyectos.


Todos son casi idénticos. Me gusta http://bitbucket.org/benoitc/django-authopenid . Tiene una gran documentación y es extremadamente fácil de usar. Hará exactamente lo que quieras y lo hará mejor que django-openid (que es el único que he probado).

HTH