详解Django-auth-ldap 配置方法
简介
Django-auth-ldap 用于 Django 应用中和 LDAP 目录服务集成,提供用户认证和授权功能。在使用 Django-auth-ldap 前,需要在 Django 设置中配置 LDAP 访问,并根据您的需求配置认证、授权和同步等选项。
安装
您可以通过运行以下命令安装 Django-auth-ldap:
pip install django-auth-ldap
配置
添加配置
您需要在 Django 设置中添加以下配置:
AUTHENTICATION_BACKENDS = [
'django_auth_ldap.backend.LDAPBackend',
'django.contrib.auth.backends.ModelBackend',
]
LDAP_SERVER_URI = "ldap://example.com:389"
AUTH_LDAP_BIND_DN = "cn=django_bind,dc=example,dc=com"
AUTH_LDAP_BIND_PASSWORD = "password"
AUTH_LDAP_USER_SEARCH = LDAPSearch(
"dc=example,dc=com", ldap.SCOPE_SUBTREE, "(uid=%(user)s)"
)
AUTH_LDAP_USER_ATTR_MAP = {
"first_name": "givenName",
"last_name": "sn",
"email": "mail"
}
AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
"ou=groups,dc=example,dc=com", ldap.SCOPE_SUBTREE, "(objectClass=groupOfUniqueNames)"
)
AUTH_LDAP_REQUIRE_GROUP = "cn=django_users,ou=groups,dc=example,dc=com"
AUTH_LDAP_GROUP_TYPE = GroupOfUniqueNamesType()
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
"is_active": "cn=active_users,ou=groups,dc=example,dc=com",
"is_staff": "cn=staff,ou=groups,dc=example,dc=com",
"is_superuser": "cn=superuser,ou=groups,dc=example,dc=com"
}
添加 URL
您需要将以下 URL 添加到您的 URLconf 中:
from django.urls import include, path
from django.contrib.auth.views import LogoutView, LoginView
urlpatterns = [
path("accounts/login/", LoginView.as_view(), name="login"),
path("accounts/logout/", LogoutView.as_view(), name="logout"),
path("accounts/", include("django_auth_ldap.urls")),
]
示例1:授权用户组
假设您的 LDAP 服务器上有一个名为 “Web Developers” 的组,您可以将此组授权给 Django 使用。在上述配置中,我们使用了以下选项:
AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
"ou=groups,dc=example,dc=com", ldap.SCOPE_SUBTREE, "(objectClass=groupOfUniqueNames)"
)
AUTH_LDAP_REQUIRE_GROUP = "cn=django_users,ou=groups,dc=example,dc=com"
这将搜索 LDAP 服务器上以 “groupOfUniqueNames” 为 objectClass 的组,并授权 “Web Developers” 组中的成员登录 Django 应用。
示例2:同步用户属性
如果 LDAP 服务器上存在用户的额外属性,您也可以将其同步到 Django 中。在上述配置中,我们使用了以下选项:
AUTH_LDAP_USER_ATTR_MAP = {
"first_name": "givenName",
"last_name": "sn",
"email": "mail"
}
这将同步用户的 “givenName” 属性到 Django 用户模型中的 “first_name” 字段。您可以添加任意属性,并将其映射到 Django 用户模型中的字段。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Django-auth-ldap 配置方法 - Python技术站