30 votes

Quelle bibliothèque openid / oauth pour connecter un projet django à des comptes Google Apps?

Je suis en train de travailler sur un intranet projet django (et non à l'aide de GAE) pour une société qui utilise Google Apps pour la connexion. J'aimerais que mes utilisateurs puissent se connecter à mon projet django à l'aide de leur compte google la connexion. OpenID semble approprié, bien que peut-être Oauth pourrait fonctionner aussi?

Je vois beaucoup de même nom bibliothèques de connecter django auth du système externe de connexion des systèmes:

Voici ce que j'aimerais faire avec l'intégration: Ont les utilisateurs de se connecter avec leur compte google, au lieu de la patrie, de django système. Garder de django reinhardt, un modèle d'autorisations pour des choses comme l'administrateur système. Donc je pense que cela signifie automatiquement la création d'un nouvel enregistrement de l'utilisateur dans django la première fois un nouveau compte, nous n'avons pas vu avant dans les journaux.

Peut quelqu'un avec de l'expérience à l'aide de l'un de ces projets me conseiller sur ce qui serait le mieux? Ou tout simplement des conseils sur qui sont les plus actifs et fonctionnels, si vous avez essayé? Merci!

17voto

Leopd Points 12652

J'ai finalement obtenu ce travail, donc je vais répondre à ma propre question car les réponses précédentes ici ont été utiles, mais elles ne disent pas toute l'histoire.

django-openid-auth est en fait assez facile à configurer et à utiliser. Le fichier README est très clair. Si vous voulez juste utiliser les comptes google (c'est à dire @gmail.com les adresses) puis vous le configurer dans settings.py avec:

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

Mais si vous souhaitez utiliser un "google apps" de compte, c'est à dire hébergé gmail à votre propre entreprise domaine, alors c'est plus compliqué. J'ai obtenu mon les détails de cette question. Pour utiliser vos comptes google apps, configurer votre settings.py pour:

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

Dans le futur, c'est possible que ça fonctionne, mais aujourd'hui, il ne sera probablement pas. Le problème est en python-openid qui django-openid-auth s'appuie sur. La version standard de python-openid ne comprends pas certaines extensions du protocole de google est à l'aide. (Pourquoi est-ce que google nécessité d'étendre le protocole? Creuser par le biais de http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains et d'en faire rapport. Bonne chance.) Si vous avez besoin d'utiliser à la place adieu du patch pour python-openid, qui est disponible ici: http://github.com/adieu/python-openid

L'installation de cette sur votre existant python-openid. Maintenant, il doit travailler.

Soyez prudent avec l' OPENID_USE_AS_ADMIN_LOGIN paramètre, car il exige de vous un openid compte d'utilisateur qui est "personnel" ou "super-utilisateur" pour l'utilisation de l'admin qui n'arrivera pas par défaut. De sorte que vous aurez besoin de faire d'un procédé en 2 étapes de l'activation de l'openid, en vous connectant avec votre openid créer un compte dans django, puis à l'aide de votre ancien compte admin pour marquer votre openid compte en tant que superutilisateur, et de désactivation non-openid accès admin.

Encore une chose: votre administrateur de domaine peut avoir besoin pour permettre à openid login pour votre nom de domaine avant que cela ne fonctionne. Le contrôle est à http://www.google.com/a/cpanel/example.com/SetupIdp

3voto

zaynyatyi Points 725

J'ai utilisé django-openid-auth . Fonctionne bien, peut créer un compte utilisateur lors de la première signature. Vous pouvez également associer la connexion openid au compte utilisateur dans le panneau d'administration de django.

1voto

Chad Points 801

Je sais que c'est une réponse tardive, mais je fais des trucs similaires et je viens de découvrir django-socialregistration . qui fait essentiellement OAuth, OpenID, Facebook Connect, etc. Contrairement à certaines des autres options, il semble être activement développé et utilisé par de nombreux projets.

0voto

lilith Points 46

J'ai aimé que l' enregistrement social Django me permette de brancher assez facilement les comptes Google, Facebook, Yahoo et tout autre site OpenID. Vous avez juste besoin de donner au fournisseur un lien comme ceci:

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

0voto

Conceited Code Points 1976

Ils sont tous presque identiques. J'aime django-authopenid . Il a une excellente documentation et est extrêmement facile à utiliser. Il fera exactement ce que vous voulez et le fera mieux que django-openid (qui est le seul autre que j'ai essayé).

HTH

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X