40次发布
0.11.5 | 2024年6月27日 |
---|---|
0.11.3 | 2023年6月8日 |
0.11.1 | 2023年1月4日 |
0.11.0-beta.1 | 2022年12月20日 |
0.5.0 | 2017年7月20日 |
#60 在 网络编程
62,181 每月下载量
用于 28 个 包(27 个直接使用)
270KB
5.5K SLoC
LDAP客户端库
使用Tokio堆栈的纯Rust LDAP客户端库。
版本说明
0.11分支现在处于维护模式,0.10已退役。如果您正在使用GSSAPI并且使用Rust 1.78.0或更高版本编译,请升级到0.11.5。
文档
API参考
为那些还在LDAP世界中摸索的人提供LDAP简介。
杂项说明
该库仅提供客户端功能。不能用它创建LDAP服务器或代理。它仅支持基于连接的传输协议的版本3。
没有内置的连接池、自动回退或重连支持。
使用方法
将其添加到您的 Cargo.toml
[dependencies.ldap3]
version = "0.11.5"
该库可以同步或异步使用。目标是提供两种风格基本上相同的调用接口,根据I/O的性质,在交互和返回值方面有所不同。
示例
以下两个示例执行完全相同的操作,并应产生相同的结果。它们应在包源代码的 data
子目录中的示例服务器上运行。其他期望相同服务器设置的示例程序可以在 examples
子目录中找到。
同步搜索
use ldap3::{LdapConn, Scope, SearchEntry};
use ldap3::result::Result;
fn main() -> Result<()> {
let mut ldap = LdapConn::new("ldap://127.0.0.1:2389")?;
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()?)
}
异步搜索
use ldap3::{LdapConnAsync, Scope, SearchEntry};
use ldap3::result::Result;
#[tokio::main]
async fn main() -> Result<()> {
let (conn, mut ldap) = LdapConnAsync::new("ldap://127.0.0.1:2389").await?;
ldap3::drive!(conn);
let (rs, _res) = ldap.search(
"ou=Places,dc=example,dc=org",
Scope::Subtree,
"(&(objectClass=locality)(l=ma*))",
vec!["l"]
).await?.success()?;
for entry in rs {
println!("{:?}", SearchEntry::construct(entry));
}
Ok(ldap.unbind().await?)
}
编译时功能
以下功能在编译时可用
-
sync(默认启用):同步API支持。
-
gssapi(默认禁用):Kerberos/GSSAPI支持。在Windows上,使用系统支持包和SDK库。在其他地方,该功能需要Clang及其开发库(用于
bindgen
),以及Kerberos开发库。在Debian/Ubuntu上,这意味着clang-N
、libclang-N-dev
和libkrb5-dev
。从这些要求中可以看出,GSSAPI支持使用FFI到C库;您应考虑这一事实的安全影响。有关使用说明和注意事项,请参阅API参考中
Ldap::sasl_gssapi_bind()
的文档。 -
tls(默认启用):TLS支持,由
native-tls
包提供支持,使用特定于平台的TLS后端。这是tls-native的别名。 -
tls-rustls(默认禁用):TLS支持,由Rustls库提供支持。
如果没有启用任何特性,则只有普通的TCP连接(以及Unix-like平台上的Unix域套接字)可用。对于TLS支持,tls和tls-rustls是互斥的:同时选择两者会导致编译时错误。
许可证
许可协议为以下之一
- Apache License,版本2.0(LICENSE-APACHE),或
- MIT许可证(LICENSE-MIT)
任选其一。
依赖项
~6–39MB
~653K SLoC