Intégration LDAP pour la connexion des autres utilisateurs #12

Open
opened 2020-11-01 16:14:23 +01:00 by Fred · 0 comments
Owner

Title: Django & authentification LDAP
Date: 2015-02-27
Status: Draft

En créant une nouvelle application avec Django, on crée par défaut un système d'authentification des utilisateurs. Ceci est géré par django.contrib.auth que l'on retrouve dans les INSTALLED_APPS du fichier de configuration.

En entreprise, on sera tenté de se greffer sur l'annuaire LDAP déjà présent, pour éviter de gérer les mots de passe de chaque nouvel utilisateur. Pour cela, Makina-Corpus propose de combiner une authentification LDAP et l'authentification classique de Django. Pour la suite, je me baserai en partie sur ce qui a déjà été écrit sur le sujet.

Tout d'abord, Django autorise la surchage du système d'authentification. On peut définir un nouveau backend, se baser sur celui qui existe déjà, étendre le modèle d'utilisateur, ajouter de nouvelles permissions... Tout cela est décrit dans la documentation.

Pour étendre le modèle, on crée simplement une nouvelle classe qui hérite de django.contrib.auth.models.AbstractUser, et on y ajoute un champ permettant de définir si cet utilisateur provient de l'annuaire ou a été créé directement dans la base de données:

from django.contrib.auth.models import AbstractUser
from django.utils.translation import ugettext as _

class SystemUser(AbstractUser):
	from_ldap = models.BooleanField(_('LDAP User'), editable=False, default=False)
Title: Django & authentification LDAP Date: 2015-02-27 Status: Draft En créant une nouvelle application avec Django, on crée par défaut un système d'authentification des utilisateurs. Ceci est géré par `django.contrib.auth` que l'on retrouve dans les `INSTALLED_APPS` du fichier de configuration. En entreprise, on sera tenté de se greffer sur l'annuaire LDAP déjà présent, pour éviter de gérer les mots de passe de chaque nouvel utilisateur. Pour cela, [Makina-Corpus](http://makina-corpus.com) propose de [combiner une authentification LDAP et l'authentification classique de Django](http://makina-corpus.com/blog/metier/2014/combiner-une-authentification-ldap-et-lauthentification-classique-django). Pour la suite, je me baserai en partie sur ce qui a déjà été écrit sur le sujet. Tout d'abord, Django autorise la surchage du système d'authentification. On peut définir un nouveau backend, se baser sur celui qui existe déjà, étendre le modèle d'utilisateur, ajouter de nouvelles permissions... Tout cela est [décrit dans la documentation](https://docs.djangoproject.com/en/1.8/topics/auth/customizing/). Pour étendre le modèle, on crée simplement une nouvelle classe qui hérite de `django.contrib.auth.models.AbstractUser`, et on y ajoute un champ permettant de définir si cet utilisateur provient de l'annuaire ou a été créé directement dans la base de données: ``` from django.contrib.auth.models import AbstractUser from django.utils.translation import ugettext as _ class SystemUser(AbstractUser): from_ldap = models.BooleanField(_('LDAP User'), editable=False, default=False) ```
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Fred/gwift-book#12
No description provided.