LDAP配置

1 篇文章 0 订阅
本文详细介绍了如何在Django项目中配置LDAP认证,包括AUTHENTICATION_BACKENDS设置、LDAP服务器连接配置、用户搜索和组搜索参数、权限控制以及用户属性映射。此外,还涉及了Windows AD环境下特定的LDAP连接选项,确保了用户登录和权限管理的灵活性和实时性。
摘要由CSDN通过智能技术生成

LDAP标注:

  1. Cn:common name 通用名
    对象的属性为CN,例如一个用户的名字为:张三,那么“张三”就是一个CN。

  2. ou : OrganizationUnit 组织单位
    o和ou都是ldap目录结构的一个属性,建立目录的时候可选新建o,ou 等。在配置我司交换设备ldap的时候具体是配置ou,o还是cn等,要具体看ldap服务器的相应目录是什么属性。

  3. o:organizationName 组织名

  4. uid: userid
    对象的属性为uid,例如我司一个员工的名字为:zsq,他的UID为:z02691,ldap查询的时候可以根据cn,也可以根据uid。配置ldap查询的时候需要考虑用何种查询方式。我司两种方式都支持,具体我司设备配置根据何种方式查询需要有ldap服务器的相关配置来决定。

  5. DC:Domain Component
    DC类似于dns中的每个元素,例如h3c.com,“.”符号分开的两个单词可以看成两个DC,

  6. DN:Distinguished Name
    类似于DNS,DN与DNS的区别是:组成DN的每个值都有一个属性类型,例如:
    H3c.com是一个dns,那么用dn表示为:dc=h3c,dc=com 级别越高越靠后。H3c和com的属性都是DC。
    DN可以表示为ldap的某个目录,也可以表示成目录中的某个对象,这个对象可以是用户等。

eg:
Django认证的ldap配置

#修改Django认证先走ldap,再走本地认证
AUTHENTICATION_BACKENDS = [
    'django_auth_ldap.backend.LDAPBackend',
    'django.contrib.auth.backends.ModelBackend',
]
 
#ldap的连接基础配置
AUTH_LDAP_SERVER_URI = "ldap://xxx.xxx.xxx.xxx:389" # ldap or ad 服务器地址
AUTH_LDAP_BIND_DN = "CN=administrator,CN=Users,DC=test,DC=com" # 管理员的dn路径
AUTH_LDAP_BIND_PASSWORD = 'testpassword' # 管理员密码
 
#允许认证用户的路径
AUTH_LDAP_USER_SEARCH = LDAPSearch("OU=test,DC=test,DC=intra",
                                   ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)")
 
#通过组进行权限控制
AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=groups,ou=test,dc=test,dc=intra",
    ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)"
)
 
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType()
 
#is_staff:这个组里的成员可以登录;is_superuser:组成员是django admin的超级管理员;is_active:组成员可以登录django admin后台,但是无权限查看后台内容
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    "is_staff": "cn=test_users,ou=groups,OU=test,DC=test,DC=com",
    "is_superuser": "cn=test_users,ou=groups,OU=tset,DC=test,DC=com",
}
#通过组进行权限控制end
 
#如果ldap服务器是Windows的AD,需要配置上如下选项
AUTH_LDAP_CONNECTION_OPTIONS = {
    ldap.OPT_DEBUG_LEVEL: 1,
    ldap.OPT_REFERRALS: 0,
}
 
#当ldap用户登录时,从ldap的用户属性对应写到django的user数据库,键为django的属性,值为ldap用户的属性
AUTH_LDAP_USER_ATTR_MAP = {
    "first_name": "givenName",
    "last_name": "sn",
    "email": "mail"
}
 
#如果为True,每次组成员都从ldap重新获取,保证组成员的实时性;反之会对组成员进行缓存,提升性能,但是降低实时性
# AUTH_LDAP_FIND_GROUP_PERMS = True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值