#ldap #ldap-server #bindings #codes #free #native #error

openldap

直接连接C语言OpenLDAP库的Rust绑定。这是对cldap的分支,经过系统性地修复、扩展,使其更符合OpenLDAP。目前应该相对健壮,可用于生产环境。维护程度不高,但如果发现遗漏之处,欢迎提交PR。

6个稳定版本

使用旧Rust 2015

1.2.2 2020年1月15日
1.2.1 2017年3月29日
1.1.0 2016年9月6日
1.0.2 2016年8月15日
1.0.0 2016年8月9日

#1233网络编程

Download history 23/week @ 2024-03-24 69/week @ 2024-03-31 32/week @ 2024-04-07 39/week @ 2024-04-14 35/week @ 2024-04-21 22/week @ 2024-04-28 18/week @ 2024-05-05 68/week @ 2024-05-12 47/week @ 2024-05-19 33/week @ 2024-05-26 53/week @ 2024-06-02 58/week @ 2024-06-09 58/week @ 2024-06-16 66/week @ 2024-06-23 48/week @ 2024-06-30 71/week @ 2024-07-07

每月247次下载

MIT许可证

43KB
643

openldap

Rust对本地OpenLDAP库的绑定,包含连接、绑定、配置和查询LDAP服务器的便捷抽象。

使用方法

使用openldap非常简单,如下所示。

extern crate openldap;

use openldap::*;
use openldap::errors::*;

fn some_ldap_function(ldap_uri: &str, ldap_user: &str, ldap_pass: &str) -> Result<(), LDAPError> {
    let ldap = RustLDAP::new(ldap_uri).unwrap();

    ldap.set_option(codes::options::LDAP_OPT_PROTOCOL_VERSION,
                    &codes::versions::LDAP_VERSION3);

    ldap.set_option(codes::options::LDAP_OPT_X_TLS_REQUIRE_CERT,
                    &codes::options::LDAP_OPT_X_TLS_DEMAND);

    ldap.simple_bind(ldap_user, ldap_pass).unwrap();

    // Returns a LDAPResponse, a.k.a. Vec<HashMap<String,Vec<String>>>.
    let _ = ldap.simple_search("CN=Stephen,OU=People,DC=Earth",
                       codes::scopes::LDAP_SCOPE_BASE)
        .unwrap();

    Ok(())
}

fn main() {
    let ldap_uri = "ldaps://127.0.0.1:636";
    let ldap_user = "user";
    let ldap_pass = "pass";
    some_ldap_function(ldap_uri, ldap_user, ldap_pass).unwrap();
}

安全性

在调用绑定之前,应使用start_tls来避免在不受信任的网络中明文发送凭据。有关更多信息,请参阅https://linux.die.net/man/3/ldap_start_tls_s

fn some_ldap_function(ldap_uri: &str, ldap_user: &str, ldap_pass: &str) -> Result<(), LDAPError> {
    let ldap = RustLDAP::new(ldap_uri).unwrap();

    ldap.set_option(codes::options::LDAP_OPT_PROTOCOL_VERSION,
                    &codes::versions::LDAP_VERSION3);

    ldap.set_option(codes::options::LDAP_OPT_X_TLS_REQUIRE_CERT,
                    &codes::options::LDAP_OPT_X_TLS_DEMAND);
    ldap.set_option(openldap::codes::options::LDAP_OPT_X_TLS_NEWCTX, &0);

    ldap.start_tls(None, None);

    ldap.simple_bind(ldap_user, ldap_pass).unwrap();

    Ok(())
}    

失败时,将返回一个包含来自本地OpenLDAP库详细消息的openldap::errors::LDAPError

贡献

我很高兴接受贡献。如果您有希望合并回master的工作,请发送PR,我会很高兴查看。我更喜欢不破坏API的更改,但我也愿意考虑破坏性更改。

依赖项

~43KB