如何使用ldap3 crate通过用户名密码完成ldaps的bind绑定认证
ldap3 crate LDAPS连接传入账号密码实现方法
核心通过simple_bind方法完成账号密码绑定,只需在原有示例基础上新增绑定逻辑、修改连接地址前缀即可,完整示例代码如下:
use ldap3::{LdapConn, Scope, SearchEntry}; use ldap3::result::Result; fn main() -> Result<()> { // 替换为实际LDAPS服务地址,标准LDAPS端口为636 let mut ldap = LdapConn::new("ldaps://你的LDAP服务地址:636")?; // 账号绑定:第一个参数为用户完整DN,第二个参数为对应用户密码 ldap.simple_bind("cn=管理员,dc=示例,dc=org", "你的用户密码")?.success()?; // 后续查询逻辑与原示例一致 let (rs, _res) = ldap.search( "ou=Places,dc=example,dc=org", Scope::Subtree, "(&(objectClass=locality)(l=ma*))", vec!["l"] )?.success()?; for entry in rs { println!("{:?}", SearchEntry::construct(entry)); } Ok(ldap.unbind()?) }
常用注意事项
simple_bind第一个参数需传入用户完整可分辨名称(DN),不可直接传短用户名,需按照你的LDAP服务目录规则拼接为完整DN再传入- 如果LDAPS服务使用自签名证书,可通过
LdapConnBuilder配置跳过证书校验,示例如下:
use ldap3::LdapConnBuilder; let mut ldap = LdapConnBuilder::new() .set_tls_config(|tls| tls.set_verify(rustls::client::ServerCertVerified::assertion())) .connect("ldaps://你的LDAP服务地址:636")?;
内容的提问来源于stack exchange,提问作者Allan K
相关产品推荐
相关产品推荐

