<p>我使用Samba4 DC和python ldap模块进行了一些测试,并完成了以下示例:</p>
<pre><code>#!/usr/bin/env python2
# -*- coding: utf-8 -*-
import ldap, ldapurl, subprocess, sys, shlex, os
GrupoLDAP = "Domain Users" #Grupo a recuperar
CACert = '/etc/cert/ca.cert.pem' #Certificado CA
ldap.set_option(ldap.OPT_X_TLS_CACERTFILE, CACert)
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_HARD)
proto = 'ldaps' #Protocolo
server = 'domain.com' #Dirección del servidor (mismo nombre del Certificado)
port = 636 #Puerto seguro para ldaps
try:
url = ldapurl.LDAPUrl(urlscheme=proto, hostport="%s:%s" % (server, str(port))).initializeUrl()
ldap_obj = ldap.initialize(url)
ldap_obj.simple_bind_s('user@domain.com','PassWord')
base = 'OU=Users,DC=domain,DC=com' #Ruta y UO del grupo
scope = ldap.SCOPE_SUBTREE
query = '(&(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))'
res_attrs = ['sAMAccountName', 'cn']
#res_attrs = ['*']
res = ldap_obj.search_s(base, scope, query, res_attrs)
except ldap.LDAPError as Error:
print "Ha ocurrido un error al conectar o realizar la query al servidor LDAP:\n\n%s" % Error
sys.exit(1)
</code></pre>
<p>证书需要CN中的FQDN,并由CA证书签名以避免证书错误。在我向同一个FQDN添加第二个DC之前一直在工作,但如果您只有一个DC,它应该可以工作。
我不知道它在windowsldap上是如何工作的,但是看起来很相似。在</p>
<p>你好!!在</p>