Django LDAP - 如何将描述字段映射到 Django 组

Gre*_*Ant 2 python ldap authentication django

我正在尝试使用Django-Auth为我的 Django 应用程序设置 LDAP 身份验证

我想要做的基本想法是,描述中带有“IT - Help Desk”的任何 LDAP 用户都将映射到某个 Django 组,描述中带有“Admin”的用户将转到另一个 Django 组,其他任何人都不会不许进。

(有一些遗留原因我必须使用描述字段,所以这不是一个可以改变的选项)

更新:后续对话的某些部分移至此处

小智 6

django-auth-ldap 1.0.9(3/27 发布)添加了一对 Django 信号,客户端可以使用它们来执行一些用户和配置文件对象的自定义填充。我建议连接到populate_user信号并使用 LDAP 属性来更新用户的组成员身份。例如:

import django_auth_ldap.backend

def update_groups(sender, user=None, ldap_user=None, **kwargs):
    # Remember that every attribute maps to a list of values
    descriptions = ldap_user.attrs.get("description", [])

    if "IT - Help Desk" in descriptions:
        # Add user to group
    else:
        # Remove user from group

django_auth_ldap.backend.populate_user.connect(update_groups)
Run Code Online (Sandbox Code Playgroud)

这甚至可以安全地与AUTH_LDAP_MIRROR_GROUPS结合使用,因为在所有内置用户填充完成后发送信号。