温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Django如何配置Windows AD域进行账号认证

发布时间:2021-09-28 10:25:19 来源:亿速云 阅读:326 作者:柒染 栏目:大数据

Django如何配置Windows AD域进行账号认证,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

我们使用Django开发网站后台是,会有账号密码认证登录的需求,一般公司内部会使用Windows 的AD 或者Linux下的OpenLDAP进行账号密码认证。以下为Django使用Windows AD进行账号认证的配置,代码全部配置在Django的setting.py 文件中。

代码如下:

 1#Django-auth-ldap 配置部分 此部分代码配置在django的settings.py里
2import ldap
3from django_auth_ldap.config import LDAPSearch,GroupOfNamesType
4
5#修改Django认证先走ldap,再走本地认证
6AUTHENTICATION_BACKENDS = [
7    'django_auth_ldap.backend.LDAPBackend',
8    'django.contrib.auth.backends.ModelBackend',
9]
10
11#ldap的连接基础配置
12AUTH_LDAP_SERVER_URI = "ldap://192.168.146.21:389"
13AUTH_LDAP_BIND_DN = "CN=administrator,CN=Users,DC=test,DC=com"
14AUTH_LDAP_BIND_PASSWORD = 'testpassword'
15
16#允许认证用户的路径
17# AUTH_LDAP_USER_SEARCH = LDAPSearch("OU=test,DC=test,DC=com", ldap.SCOPE_SUBTREE, "(&(objectClass=person)(sAMAccountName=%(user)s))")
18AUTH_LDAP_USER_SEARCH = LDAPSearch("OU=test,DC=test,DC=intra",
19                                   ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)")
20
21#通过组进行权限控制
22AUTH_LDAP_GROUP_SEARCH = LDAPSearch("ou=groups,ou=test,dc=test,dc=intra",
23    ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)"
24)
25
26AUTH_LDAP_GROUP_TYPE = GroupOfNamesType()
27
28#is_staff:这个组里的成员可以登录;is_superuser:组成员是django admin的超级管理员;is_active:组成员可以登录django admin后天,无权限
29AUTH_LDAP_USER_FLAGS_BY_GROUP = {
30    "is_staff": "cn=test_users,ou=groups,OU=test,DC=test,DC=com",
31    "is_superuser": "cn=test_users,ou=groups,OU=tset,DC=test,DC=com",
32}
33#通过组进行权限控制end
34
35#如果ldap服务器是Windows的AD,需要配置上如下选项
36AUTH_LDAP_CONNECTION_OPTIONS = {
37    ldap.OPT_DEBUG_LEVEL: 1,
38    ldap.OPT_REFERRALS: 0,
39}
40
41#当ldap用户登录时,从ldap的用户属性对应写到django的user数据库,键为django的属性,值为ldap用户的属性
42AUTH_LDAP_USER_ATTR_MAP = {
43    "first_name": "givenName",
44    "last_name": "sn",
45    "email": "mail"
46}
47
48#如果为True,每次组成员都从ldap重新获取,保证组成员的实时性;反之会对组成员进行缓存,提升性能,但是降低实时性
49# AUTH_LDAP_FIND_GROUP_PERMS = True 
 

配置完成后,用户通过admin后台登录时,如果域用户不在指定的group中时,会提示登录失败,但是在auth_user用户表中,会有这个用户的属性,配置了superuser的可以登录后台,代码中配置的默认账号,可以直接登录admin后天,以管理员的身份登录。

看完上述内容,你们掌握Django如何配置Windows AD域进行账号认证的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI