博客
关于我
Python ldap3 代码从 SID 获取用户名
阅读量:804 次
发布时间:2023-03-05

本文共 1368 字,大约阅读时间需要 4 分钟。

如何将SID转换为Active Directory用户名

在Active Directory环境中,安全身份识别码(SID)是唯一标识用户的值。以下是将SID转换为用户名的完整步骤和示例代码。

安装所需库

首先,安装ldap3库。这是实现Active Directory操作的强大工具。

pip install ldap3

将SID转换为DN

在Active Directory中,SID和DN(Distinguished Name)是等价的。SID可以通过将其转换为特定的字符串格式来得到DN。

ldap3 Server和Connection模块将被使用来实现这一点。

使用LDAP查询获取用户名

步骤一:配置LDAP连接

使用ldap3连接到你的Active Directory服务器,并提供管理员账户进行认证。

from ldap3 import Server, Connection, ALL, SUBTREEdef sid_to_username(sid):    # 你的域名    domain = 'dc=example,dc=com'        # LDAP服务器地址    server = Server('ldap.example.com', get_info=ALL)        # 连接到服务器    conn = Connection(server, user='administrator@example.com', password='password')        # 定义要搜索的DN    dn = f"CN={sid},{domain}"

步骤二:搜索并获取用户名

在连接成功后,搜索DN以获取用户的CN(Common Name)。

# 搜索所有匹配项conn.search(dn, '(objectClass=*)', search_scope=SUBTREE)if conn.entries:    # 返回用户名    return conn.entries[0]['cn'][0]else:    return None

测试函数

示例代码

def test_sid_to_username():    assert sid_to_username('S-1-5-21-123456789-987654321-000000000-1001') == 'John Doe'    assert sid_to_username('S-1-5-21-234567890-098765432-000000000-2002') == 'Jane Smith'    assert sid_to_username('S-1-5-21-345678901-987654321-000000000-3003') == 'Alice Johnson'

测试结果

运行上述代码可以验证函数的正确性。每个SID都会返回相应的用户名,确保函数正常工作。

注意事项

  • 确保域名正确无误。
  • 检查LDAP服务器地址是否正确。
  • 确保管理员账户权限足够。
  • 如果遇到问题,可以查看ldap3的日志或错误信息。

通过以上步骤,你可以轻松地将SID转换为Active Directory用户名,并在代码中实现这一功能。

转载地址:http://taafk.baihongyu.com/

你可能感兴趣的文章
Python 基础一
查看>>
python 基础操作知识整理总结
查看>>
Python 基础知识点整理与分享,期盼你的交流!
查看>>
python 基础第七篇
查看>>
Python编程:Tkinter图形界面设计(1)
查看>>
Python 基础语法:None
查看>>
Python 基础语法:基本数据类型(一)
查看>>
python编程读取写入excel_Python读取txt内容写入xls格式excel中的方法
查看>>
Python 基础语法:基本数据类型(字典)
查看>>
Python 基础语法:基本数据类型(字符串)
查看>>
Python 基础语法:基本数据类型(集合)
查看>>
Python编程的终极十大工具
查看>>
python 堆排序
查看>>
python编程方式之一-函数式编程
查看>>
python 复习计划
查看>>
Python 多处理 apply_async 永远不会在 Windows 7 上返回结果
查看>>
Python 多处理 Numpy 随机
查看>>
Python 多处理 >= 125 列表永远不会完成
查看>>
Python 多处理:在第一个子错误时中止映射
查看>>
Python 多处理不断产生 pythonw.exe 进程而不做任何实际工作
查看>>