django添加ldap

 1.前言

本文旨在介绍:在已完成django认证权限的基础上添加ldap。

2.回顾已完成的权限

网上有很多教程,这里不再细讲了。它包括两部分:

中间件实现

用到了django的2个表

  • django.contrib.auth.models 对应表:auth_user
  • django.contrib.sessions.models 对应表:django_session

3. 添加第三方认证ldap

写在开始之前:当enable ldap,如果用ldap账号首次登录会在auth_user创建一条记录

3.1 安装依赖包

1. python-ldap(windows环境请用whl按照)
2. django-auth-ldap

//如果出现python-ldap fatal error: lber.h: No such file or directory

sudo apt-get install -y python-dev libldap2-dev libsasl2-dev libssl-dev
sudo yum install python-devel openldap-devel

3.2 校验

在开始之前,先用python校验下拿到的ldap配置参数是否正常

import ldap
conn = ldap.initialize("ldap:port")

res = conn.simple_bind_s('cn=test,dc=com,dc=cn', "test")
print(res)

searchScope = ldap.SCOPE_SUBTREE
searchFilter = 'cn=test1'
base_dn = 'ou=Test,dc=com,dc=cn'
print(conn.search_s(base_dn, searchScope, searchFilter, None))

3.3 配置到django setting

import ldap
from django_auth_ldap.config import LDAPSearch

# 找公司IT提供ldap配置
AUTH_LDAP_SERVER_URI = ""

AUTH_LDAP_BIND_DN = "cn=test,dc=com,dc=cn"
AUTH_LDAP_BIND_PASSWORD = "test"

# 根据上面的改动 AUTH_LDAP_USER_SEARCH
= LDAPSearch( 'ou=Test,dc=com,dc=cn', ldap.SCOPE_SUBTREE, '(uid=%(user)s)', )
# 请注意这部分 AUTH_LDAP_USER_ATTR_MAP
= { 'username': 'cn', // 请对应login的username 'password': 'sn', // 请对应login的password } AUTHENTICATION_BACKENDS = ( 'django_auth_ldap.backend.LDAPBackend', 'django.contrib.auth.backends.ModelBackend', ) 

3.4  修改django login

(很奇怪,发现很多教程都没写这块东东)

user = authenticate(username=username, password=password)
if user:
    if user.is_active:
        if "ldap_username" in dir(user):  //如果是自身的权限,请关注不同点
            ***            

 

posted @ 2019-08-06 16:09  fly_pig  阅读(986)  评论(0编辑  收藏  举报