zoukankan      html  css  js  c++  java
  • Django 中集成Microsoft 的AD 验证

     最近在django的项目中需要集成Microsoft的AD(Active Directory)验证系统,在网上google了一番之后,发现都是在谈论django如何与Openldap集成,没有找到与AD集成相关的例子。仔细看看后,本质上AD与Openldap应该没有什么太大的区别,都是ldap协议的具体实现,经过一番折腾后,终于可以工作了,先记录如下:

    1. 当然需要先安装相关的软件包 ldap 和django_auth_ldap

    2. 在settings.py中加入以下设置:

     1 import ldap 
     2 from django_auth_ldap.config import LDAPSearch,PosixGroupType,ActiveDirectoryGroupType 
     3 
     4 AUTH_LDAP_SERVER_URI = 'ldap://test.domain.com:389'
     5 AUTH_LDAP_BIND_DN = 'testuser'
     6 AUTH_LDAP_BIND_PASSWORD = 'password'
     7 AUTH_LDAP_USER_SEARCH = LDAPSearch('dc=test,dc=domain,dc=com', ldap.SCOPE_SUBTREE, '(sAMAccountName=%(user)s)',)
     8 AUTH_LDAP_GROUP_SEARCH = LDAPSearch('OU=GlobalUsers,DC=test,DC=domain,DC=com', ldap.SCOPE_SUBTREE, '(objectClass=group)')
     9 AUTH_LDAP_GROUP_TYPE = ActiveDirectoryGroupType()
    10 
    11 # Only users in this group can log in.
    12 #AUTH_LDAP_REQUIRE_GROUP = 'DC=test,DC=domain,DC=com'
    13 
    14 # Populate the Django user from the LDAP directory.
    15 AUTH_LDAP_USER_ATTR_MAP = {
    16     'first_name': 'givenName',
    17     'last_name': 'sn',
    18     'email': 'mail'
    19 }
    20 
    21 #AUTH_LDAP_PROFILE_ATTR_MAP = {
    22 #    "employee_number": "employeeNumber"
    23 #}
    24 
    25 AUTH_LDAP_USER_FLAGS_BY_GROUP = {
    26     'is_active': 'cn=active,OU=GlobalUsers,DC=test,DC=domain,DC=com',
    27     'is_staff': 'cn=staff,OU=GlobalUsers,DC=test,DC=domain,DC=com',
    28     'is_superuser': 'cn=superuser,OU=GlobalUsers,DC=test,DC=domain,DC=com'
    29 }
    30 
    31 # This is the default
    32 AUTH_LDAP_ALWAYS_UPDATE_USER = False
    33 
    34 # Use LDAP group membership to calculate group permissions.
    35 AUTH_LDAP_FIND_GROUP_PERMS = True
    36 
    37 # Cache group memberships for 5 minutes to reduce LDAP traffic
    38 AUTH_LDAP_CACHE_GROUPS = True
    39 AUTH_LDAP_GROUP_CACHE_TIMEOUT = 300
    40 AUTH_LDAP_GLOBAL_OPTIONS = {
    41     ldap.OPT_X_TLS_REQUIRE_CERT: False,
    42     ldap.OPT_REFERRALS: False,
    43 }
    44 
    45 # Keep ModexampleBackend around for per-user permissions and maybe a local superuser.
    46 AUTHENTICATION_BACKENDS = (
    47     'django_auth_ldap.backend.LDAPBackend',
    48     'django.contrib.auth.backends.ModelBackend', 
    49 )                                                                         
    在实验阶段,发现加入以下代码到settings.py中,用来做调试,挺有用的,大家可以试试。
    1 import logging
    2 logger = logging.getLogger('django_auth_ldap')
    3 logger.addHandler(logging.StreamHandler())
    4 logger.setLevel(logging.DEBUG)
  • 相关阅读:
    本地图文直接复制到文本编辑器中
    本地图文直接复制到富文本编辑器中
    本地多张图片直接复制到富文本编辑器中
    能粘贴Word 内容(含图片)的富文本编辑器
    能粘贴Word 内容(含图片)的文本编辑器
    js+WebUploader分片上传大文件
    js+web分片上传大文件
    js+前端分片上传大文件
    Java学习——方法中传递参数分简单类型与复杂类型(引用类型)
    线段树练习
  • 原文地址:https://www.cnblogs.com/xiaobu/p/2716837.html
Copyright © 2011-2022 走看看