2016-04-26 4 views
1

djangoプロジェクトのLDAP認証を設定しようとしています。すべてのユーザーがWebサービスにアクセスできる必要がある場所(私はこれを達成しました)。私は管理者として少数の人々(ldapグループの一部)を作りたいと思っています。ログインしているユーザーがLDAPグループに所属しているかどうかを確認する必要があります。django-auth-ldap - ユーザがLDAPグループに属しているかどうかを調べる

私はDjangoのデフォルト認証バックエンドを使用しておらず、使用する予定もありません。

ユーザーが特定のLDAPグループに属しているかどうかを確認する簡単な方法はありますか?

私は "https://pythonhosted.org/django-auth-ldap/index.html"を読んで理解しようとしましたが、それは非常に高水準であり、例はありません。

+0

あなたのコードはありますか? –

答えて

0

問題が解決しました。

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}) 
関連する問題