40次发布

0.11.5 2024年6月27日
0.11.3 2023年6月8日
0.11.1 2023年1月4日
0.11.0-beta.12022年12月20日
0.5.0 2017年7月20日

#60网络编程

Download history 5855/week @ 2024-05-03 5642/week @ 2024-05-10 5758/week @ 2024-05-17 6252/week @ 2024-05-24 6849/week @ 2024-05-31 7167/week @ 2024-06-07 7098/week @ 2024-06-14 7417/week @ 2024-06-21 7201/week @ 2024-06-28 8241/week @ 2024-07-05 13256/week @ 2024-07-12 15182/week @ 2024-07-19 14572/week @ 2024-07-26 14707/week @ 2024-08-02 14783/week @ 2024-08-09 14936/week @ 2024-08-16

62,181 每月下载量
用于 28 包(27 个直接使用)

MIT/Apache

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-Nlibclang-N-devlibkrb5-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支持,tlstls-rustls是互斥的:同时选择两者会导致编译时错误。

许可证

许可协议为以下之一

任选其一。

依赖项

~6–39MB
~653K SLoC