首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-auth-ldap -查找用户是否属于ldap组

django-auth-ldap -查找用户是否属于ldap组
EN

Stack Overflow用户
提问于 2016-04-26 09:08:18
回答 1查看 2.5K关注 0票数 3

我正在尝试为django项目配置ldap身份验证。其中所有用户都应该能够访问web服务(我实现了这一点)。我想让一些人( ldap组的一部分)作为管理员。我需要验证登录的用户是否属于ldap组。

我没有使用Django默认身份验证后端,也不打算使用。

有没有什么简单的方法可以确定用户是否属于某个特定的ldap组?

我试图阅读和理解"https://pythonhosted.org/django-auth-ldap/index.html“,但它的层次非常高,并且没有示例。

EN

回答 1

Stack Overflow用户

发布于 2016-04-26 10:59:17

我的问题解决了。

代码语言:javascript
复制
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})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36853676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档