La compréhension de Django-authentification LDAP
Je suis nouveau sur Django et ont été affectées à la tâche de mettre en œuvre un utilisateur de système d'authentification avec LDAP comme le backend. Je suppose que le la documentation suppose que la fin développeur a assez d'expérience dans Django pour être en mesure de comprendre et de mettre en œuvre un tel système. C'est là que je n'arrive pas à comprendre comment mettre en œuvre une simple application django avec LDAP authentification basée sur. Voici ce que j'ai compris jusqu'à présent:
Seulement l'affichage des modifications sur un fichier:
settings.py
....
import ldap
from django_auth_ldap.config import LDAPSearch
AUTH_LDAP_SERVER_URI = "ldap://<my url>"
AUTHENTICATION_BACKENDS = ('django_auth_ldap.backend.LDAPBackend')
AUTH_LDAP_CONNECTION_OPTIONS = {
ldap.OPT_REFERRALS: 0
}
MIDDLEWARE_CLASSES = (
....
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
...
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
....
)
auth.html
<html>
<head>
<title>Login</title>
</head>
<body>
{{state}}
<form action="" method="post"> {% csrf_token %}
Email address: <input type="text" name="email" value="{{ email }}" />
Password: <input type="password" name="password" value="" />
<input type="submit" value="Log in" />
</form>
</body>
</html>
models.py:
??
views.py:
from django.shortcuts import render_to_response
from django.contrib.auth import authenticate, login
from django.template import RequestContext
def login_user(request):
username = password = ""
state = ""
if request.POST:
username = request.POST.get('username')
password = request.POST.get('password')
print username, password
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
state = "Valid account"
else:
state = "Inactive account"
return render_to_response('auth_user/auth.html', RequestContext(request, {'state': state, 'username': username}))
Ce que je ne suis pas en mesure de comprendre?
1> je suis sûr que j'aurais à mettre en œuvre une fonction dans views.py
pour obtenir le POST
valeurs pour email
et password
et de les valider, e.g: [DONC]. La documentation indique soit de mettre en œuvre une Recherche/Bind ou Directement Lier. Pourquoi? Si le views.py
permettrait de contenir la véritable morceau de code d'authentification, qu'est-ce que le code fait spécifié dans la documentation?
2> Si le views.py
serait de effectuer l'authentification, alors pourquoi avons-nous besoin de la variable spécifiée dans la documentation?
3> L'auteur a fait un excellent travail avec la bibliothèque, mais la documentation ne fournit pas une simple barebones exemple de la façon de mettre en œuvre l'ensemble du système d'authentification avec LDAP. Quelqu'un peut s'il vous plaît signaler à une telle ressource, si elle existe? Il n'est pas facile de comprendre les fichiers qui doivent être ajoutés/modifiés pour mettre en œuvre un tel système.
- Votre lien de la documentation doit être mise à jour django-auth-ldap.readthedocs.io/fr/dernière
Vous devez vous connecter pour publier un commentaire.
Cette page peut-être ce que vous cherchez: https://pypi.python.org/pypi/django-auth-ldap concernant le backend LDAP. Vous avez de la chance que l'on existe, de sorte que vous n'avez pas de code d'un auth backend-vous: -)
Fondamentalement django.contrib.auth.modèles a déjà un Utilisateur de l'objet qui contient tout ce dont vous avez besoin au sujet de l'utilisateur. Si vous n'avez pas besoin de créer un nouveau models.py.
Vous suffit de vous authentifier à votre views.py, dans une fonction de connexion, à l'aide de
Si l'utilisateur est nul, alors l'authentification a échoué. Si non, vous pouvez explorer cet objet pour voir ce qui a le backend tiré pour vous.
Ensuite, vous pouvez choisir de créer un autre modèle de l'Utilisateur comme une foreignKey si vous souhaitez conserver les Préférences liés à cet Utilisateur pour cette application, mais qui ne font pas partie de l'annuaire LDAP.
Dans ce cas, vous aurez besoin de:
Models.py
La définition des données est importante pour vous en fonction de votre application. Vous allez tirer de l'utilisateur des données de l'annuaire LDAP, et remplir le modèle avec elle et d'autres préférences liées à l'Utilisateur:
Views.py
dans la fonction de connexion, si demande.méthode == 'POST', puis get_or_create le profil de l'utilisateur à l'aide de l'utilisateur de votre vient de m'authentifier.
django-auth-ldap
de la bibliothèque, de la même échoue dans django app. Je devine que les détails de la configuration ne sont pas pris en charge ouauthenticate
n'est pas vraiment l'authentification contre le serveur LDAP. Pensez-vous que je suis absent quelque chose dans monsettings.py
?django.contrib.auth.backends.ModelBackend
comme un deuxième membre de la AUTHENTICATION_BACKENDS tuple, mais je ne pense pas que cela va vraiment aider pour votre problème particulier. Désolé.django.contrib.auth.login(request, user)
dire Django pour enregistrer l'utilisateur dans la session. Mise à jour de ma réponse ci-dessus.Django-auth-ldap docs sont en effet écrits pour les développeurs qui sont familiers avec Django. Aussi LDAP. Si vous êtes à partir de zéro, je vous recommande de prendre une étape à la fois:
conn = ldap.initialize("<url>")
, puis utilisez l'email et le mot de passe de l'INTERFACE utilisateur de le faire:conn.bind_s(email, password)
et cela fonctionne bien. Cependant, il n'est pas clair et je suppose que la raison pour laquelle les gens demandent comment le faire fonctionner.AUTH_LDAP_USER_DN_TEMPLATE
doit être réglé à l'adresse électronique qui est entré et il n'est pas nécessaire d'inclure la totalité de la valeur nom de domaine c'est à dire justeAUTH_LDAP_USER_DN_TEMPLATE=%(user)s