LDAP 파이썬 액세스를 달성

당신은 사전에 파이썬 - 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 = (). 인증하고 (= 자명 이름, 패스워드 = 암호)

 

추천

출처www.cnblogs.com/gangdou/p/12002752.html