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 在 网络编程
每月247次下载
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