당신은 사전에 파이썬 - LDAP 모듈을 설치해야합니다
LDAP 파이썬 액세스 포인트 실제로 여러 단계 :
LDAP 1, 관리자 계정을 사용하여 로그인
2 고유 필드의 필드 값이된다 사용하여, 사용자의 DN 값 (단일 사용자 메시지에 LDAP 검색을 확인 검색하는 신경 전구 데이터되어 이동 DN 값 데이터 튜플 데이터의 첫 번째 비트는 "CN = X, OU 인 = XX, OU = XXX, OU = XXXX, DC = xxxxx는, DC = COM "이 DN 값이다)
3, 다음, 사용자는 DN 값을 검색하고 사용자의 암호는 착륙 LDAP로 이동
Backend.py
가져 오기 는 LDAP 클래스 : LDAPBackend DEF 인증 용 (자체, 사용자 이름 = 없음, 암호 = 없음, ** kwargs로 일) : AUTH_LDAP_SERVER_URI = " 는 LDAP를 : //0.0.0.0 : 389 " AUTH_LDAP_BIND_DN = ' CN = 관리자 계정, DC = 도메인, 직류 COM = ' AUTH_LDAP_BIND_PASSWORD = ' 관리자 암호 ' AUTH_LDAP_BASE_DN = ' DC = 도메인, DC = COM ' IF 사용자 이름 과 비밀번호 : #의 초기화 LDAP 연결 ldapconn =ldap.initialize (AUTH_LDAP_SERVER_URI) #은 연결 프로토콜을 설정 버전 3 ldapconn.protocol_version = ldap.VERSION3 # LDAP 로그에 관리자 계정과 비밀번호를 사용하여 ldapconn.simple_bind_s (AUTH_LDAP_BIND_DN, AUTH_LDAP_BIND_PASSWORD) #을 우리가 (여기 필드가 LDAP의 값입니다 필요는 분야에 따라 다른 회사가 실제 상황에 따라 결정 될 필요가 있으므로 쿼리 데이터 필드), 내가 사용하는 것으로, 특정 계정에 SN을 검색 ldap_result_id = ldapconn.search (AUTH_LDAP_BASE_DN, ldap.SCOPE_SUBTREE, " (SN = { }) " .format (아이디) 없음) # 취득한 결과 데이터 쿼리 는 result_type을 result_data = ldapconn.result (ldap_result_id는 ,. 1 ) #은 사용자 인증에 대한 쿼리가 계속되면 한다면( 안 렌 (result_data) == 0) 은 try : # 초기화 LDAP 연결 ldapconn = ldap.initialize (AUTH_LDAP_SERVER_URI) #의 사용은 다시 LDAP에 착륙 DN 정보와 암호를 착륙 발견 # 성공적으로 착륙 돌아갑니다 경우 1 데이터 튜플 오른쪽 유사한 (97, [], 1 []) # 2, 예외가 발생한다면 ldap.INVALID_CREDENTIALS에서의 착지 실패 ldapconn.simple_bind_s (result_data [0] [0], 암호) 로거 .debug ( " LDAP 정식 성공 " ) 복귀 self._get_or_create_user (result_data [0]) 제외ldap.INVALID_CREDENTIALS는 : 반환 없음 반환 없음 다른 : 반환 없음 DEF의 _get_or_create_user는 (자체, user_info = ()) : #의 데이터베이스 쿼리 데이터베이스는 사용자가 아닌 경우 사용자의 권한을 여기에 적용, 사용자의 정보 요구는 지속 없습니다 데이터베이스에 #의 #의 #의 # 반환 사용자를
인용문
사용자 LDAPBackend = (). 인증하고 (= 자명 이름, 패스워드 = 암호)