欢迎访问宙启技术站
智能推送

Python中LDAP用户属性查询的示例代码

发布时间:2023-12-17 17:08:36

在Python中,可以使用ldap3库来进行LDAP用户属性查询。下面是一个使用示例代码,包括连接到LDAP服务器、绑定认证、查询用户属性等步骤。

首先,你需要安装ldap3库。可以使用以下命令来安装:

pip install ldap3

接下来,使用以下代码示例来进行LDAP用户属性查询:

from ldap3 import Server, Connection, ALL

def search_user_attributes(server_url, bind_dn, bind_password, username):
    # 连接到LDAP服务器
    server = Server(server_url, get_info=ALL)
    conn = Connection(server, bind_dn, bind_password, auto_bind=True)

    # 查询用户属性
    conn.search('ou=users,dc=example,dc=com', '(uid={})'.format(username))
    
    # 获取查询结果
    entries = conn.entries
    if len(entries) > 0:
        # 打印用户属性
        entry = entries[0]
        print('User Attribute:')
        for attribute in entry:
            print('{}: {}'.format(attribute, entry[attribute]))
    else:
        print('User not found.')

    # 断开LDAP连接
    conn.unbind()

# 使用例子
server_url = 'ldap://example.com:389'
bind_dn = 'cn=admin,dc=example,dc=com'
bind_password = 'password'
username = 'john.doe'

search_user_attributes(server_url, bind_dn, bind_password, username)

上述代码中首先创建一个Server对象,指定LDAP服务器的URL和get_info=ALL参数,以获取服务器信息(可选步骤)。

然后,创建一个Connection对象,指定LDAP服务器、绑定DN和绑定密码,并设置auto_bind=True参数以自动绑定。

接下来,在search方法中指定查询的基准DN和过滤条件,这里使用了用户的UID属性作为过滤条件。

使用search方法后,可以通过conn.entries属性获取查询结果。

最后,在查询结果中,使用entry[attribute]来获取用户的具体属性值,并打印出来。

在使用例子中,你需要根据实际情况修改server_urlbind_dnbind_passwordusername参数的值。

需要注意的是,LDAP服务器的配置可能因为不同的环境而有所不同,你需要根据实际情况修改查询的基准DN和过滤条件。

总结起来,这段示例代码演示了如何使用Python中的ldap3库进行LDAP用户属性查询,包括连接到LDAP服务器、绑定认证和查询用户属性等步骤。你可以根据实际需求,根据以上示例做相应的修改和扩展。