2016-04-26 10 views
1

Ich versuche die ldap-Authentifizierung für ein Django-Projekt zu konfigurieren. Wo alle Benutzer auf die Webdienste zugreifen können (das habe ich erreicht). Ich würde gerne ein paar Leute (Teil der ldap Gruppe) als Admins machen. Ich muss überprüfen, ob eingeloggter Benutzer zu einer LDAP-Gruppe gehört.django-auth-ldap - finde heraus, ob der Benutzer zu einer ldap-Gruppe gehört

Ich verwende kein Django-Standard-Authentifizierungs-Backend und plane auch nicht zu verwenden.

Gibt es eine einfache Möglichkeit zu finden, ob der Benutzer zu einer bestimmten ldap-Gruppe gehört?

Ich habe versucht zu lesen und zu verstehen "https://pythonhosted.org/django-auth-ldap/index.html" aber es ist auf sehr hohem Niveau und ohne Beispiele.

+0

Haben Sie Ihren Code? –

Antwort

0

Mein Problem ist gelöst.

settings.py: 

AUTH_LDAP_SERVER_URI = "ldap://ldap.mycompany.com" 
AUTH_LDAP_USER_DN_TEMPLATE = "CN=%(user)s,OU=Employees,OU=mycompany Users,DC=dev,DC=mycompany,DC=com" 
AUTHENTICATION_BACKENDS = ['django_auth_ldap.backend.LDAPBackend'] 

# Set up the basic group parameters. 
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("CN=%(user)s,OU=Employees,OU=mycompany Users,DC=dev,DC=mycompany,DC=com", 
    ldap.SCOPE_SUBTREE, "(objectClass=top)" #updated objectClass=top, it was groupOfNames 
) 
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType(name_attr="CN") #added argument name_attr="CN" 
AUTH_LDAP_USER_ATTR_MAP = { 
    "first_name": "givenname", 
    "last_name": "sn", 
    "email": "mail" 
} 
AUTH_LDAP_PROFILE_ATTR_MAP = {"home_directory": "homeDirectory"} 
AUTH_LDAP_USER_FLAGS_BY_GROUP = { 
    "is_active": "CN=activeGroup,OU=Standard,OU=mycompany Groups,DC=dev,DC=mycompany,DC=com", 
    "is_staff": "CN=staffGroup,OU=Standard,OU=mycompany Groups,DC=dev,DC=mycompany,DC=com", 
    "is_superuser": "CN=GROUPNAME,OU=AnwenderRollen,OU=Gruppen,ou=XXX,ou=XXX,dc=XXX,dc=XXX,dc=XXX" 
} 
### Added all below lines 
# Use LDAP group membership to calculate group permissions. 
AUTH_LDAP_FIND_GROUP_PERMS = True 
# Cache group memberships for an hour to minimize LDAP traffic 
AUTH_LDAP_CACHE_GROUPS = True 
AUTH_LDAP_GROUP_CACHE_TIMEOUT = 1 #3600 
AUTH_LDAP_BIND_AS_AUTHENTICATING_USER = True 

views.py: 

def login_view(request): 
    username = "" 
    password = "" 
    state = "" 
    if request.method == "POST": 
     username = request.POST.get('cec') 
     password = request.POST.get('password') 
     user = authenticate(username=username, password=password) 
     if user is not None: 
      login(request,user) 
      return redirect('/homepage') 
      print "user.is_active:", user.is_active 
      print "user.is_staff:", user.is_staff 
      print "user.is_superuser:", user.is_superuser 
     else: 
      state = "Invalid Credentials !!!" 
    return render(request,'testapp/loginpage.html',{'state':state}) 
Verwandte Themen