Erlang 20参考手册
eldap
eldap
模块
eldap
模块摘要
LDAP客户端
描述
该模块为轻型目录访问协议(LDAP)提供客户端API。
参考资料:
- RFC 4510-RFC 4519
- RFC 2830
以上出版物可以在这里找到IETF。
数据类型
在此模块中多次使用的类型定义:
handle()
连接手柄
attribute() =
{Type = string(), Values=[string()]}
modify_op()
见mod_add/2,mod_delete/2,mod_replace/2
scope()
见baseObject/0,singleLevel/0,wholeSubtree/0
dereference()
见neverDerefAliases/0,derefInSearching/0,derefFindingBaseObj/0,derefAlways/0
filter()
See present/1, substrings/2, equalityMatch/2, greaterOrEqual/2, lessOrEqual/2, approxMatch/2, extensibleMatch/2, 'and'/1, 'or'/1, 'not'/1
return_value() =
ok | {ok, {referral,referrals()}} | {error,Error}
referrals() =
[Address = string()]内容Address取决于服务器。
出口
open([Host]) -> {ok, Handle} | {error, Reason}
类型
建立到LDAP服务器的连接,HOST按顺序尝试。
open([Host], [Option]) -> {ok, Handle} | {error, Reason}
类型
建立到LDAP服务器的连接,HOST按顺序尝试。
日志函数有三个参数,fun(Level, FormatString, [FormatArg]) end。
超时设置每个服务器请求可能需要的最大时间(以毫秒为单位)。
所有TCP套接字选项被接受除active,binary,deliver,list,mode和packet
close(Handle) -> ok
类型
在向服务器发送取消绑定请求后关闭连接。如果连接是tls,连接将关闭ssl:close/1,否则与gen_tcp:close/1。
start_tls(Handle, Options) -> return_value()
与start_tls相同(Handle,Options,infinity)
start_tls(Handle, Options, Timeout) -> return_value()
类型
Handle如果可能的话,升级与tls 连接相关的连接。
升级分两个阶段完成:首先要求服务器获得升级权限。其次,如果请求被确认,则升级到tls被执行。
来自第一阶段的错误响应不会影响连接的当前加密状态。这些回应是:
tls_already_started连接已被加密。连接不受影响。{response,ResponseFromServer}升级被LDAP服务器拒绝。这ResponseFromServer是在rfc 2830第2.3节中解释的LDAP服务器交付的原子。连接不受影响,因此它仍未加密。
然而,第二阶段的错误将会结束连接:
Error 从ssl:connect / 3响应的任何错误
该Timeout参数用于实际的tls升级(阶段2),而timeout in eldap:open/2用于关于升级的初始协商(阶段1)。
simple_bind(Handle, Dn, Password) -> return_value()
类型
使用简单身份验证验证连接。
add(Handle, Dn, [Attribute]) -> return_value()
类型
添加一个条目。该条目不得存在。
add(Handle,
"cn=Bill Valentine, ou=people, o=Example Org, dc=example, dc=com",
[{"objectclass", ["person"]},
{"cn", ["Bill Valentine"]},
{"sn", ["Valentine"]},
{"telephoneNumber", ["545 555 00"]}]
)
delete(Handle, Dn) -> return_value()
类型
删除一个条目。
delete(Handle, "cn=Bill Valentine, ou=people, o=Example Org, dc=example, dc=com")
mod_add(Type, [Value]) -> modify_op()
类型
创建一个添加修改操作。
mod_delete(Type, [Value]) -> modify_op()
类型
创建一个删除修改操作。
mod_replace(Type, [Value]) -> modify_op()
类型
创建替换修改操作。
modify(Handle, Dn, [ModifyOp]) -> return_value()
类型
修改条目。
modify(Handle, "cn=Bill Valentine, ou=people, o=Example Org, dc=example, dc=com",
[eldap:mod_replace("telephoneNumber", ["555 555 00"]),
eldap:mod_add("description", ["LDAP Hacker"]) ])
modify_password(Handle, Dn, NewPasswd) -> return_value() | {ok, GenPasswd}
类型
修改用户的密码。看modify_password/4。
modify_password(Handle, Dn, NewPasswd, OldPasswd) -> return_value() | {ok, GenPasswd}
类型
修改用户的密码。
-
Dn。用户修改。应该是“”如果修改请求是针对LDAP会话的用户的。
-
NewPasswd。要设置的新密码。应该是“”如果服务器要生成密码。在这种情况下,结果将是{ok, GenPasswd}。
-
OldPasswd。服务器策略有时需要用户更改其密码。如果不需要,请使用modify_password/3。
modify_dn(Handle, Dn, NewRDN, DeleteOldRDN, NewSupDN) -> return_value()
类型
修改条目的DN。DeleteOldRDN指示当前的RDN是否应该在后操作之后从属性列表中移除。NewSupDN是RDN将迁移到的新父项。如果老父母仍然是父母,NewSupDN应该是“”。
modify_dn(Handle, "cn=Bill Valentine, ou=people, o=Example Org, dc=example, dc=com ",
"cn=Bill Jr Valentine", true, "")
search(Handle, SearchOptions) -> {ok, #eldap_search_result{}} | {ok, {referral,referrals()}} | {error, Reason}
类型
使用提供的SearchOptions搜索目录。必须提供基础和过滤器选项。默认值:scope是wholeSubtree(),deref是derefAlways(),types_only是false和timeout是0(意思是无穷大)。
Filter = eldap:substrings("cn", [{any,"V"}]),
search(Handle, [{base, "dc=example, dc=com"}, {filter, Filter}, {attributes, ["cn"]}]),
timeout选项SearchOptions用于ldap服务器,而超时输入eldap:open/2用于搜索操作中的每个单独请求。
baseObject() -> scope()
只搜索基本对象。
singleLevel() -> scope()
只搜索指定的级别,即不递归。
wholeSubtree() -> scope()
搜索整个子树。
neverDerefAliases() -> dereference()
永远不要反驳别名,将别名视为条目。
derefAlways() -> dereference()
始终拒绝别名。
derefInSearching() -> dereference()
只有在搜索时才会出现别名。
derefFindingBaseObj() -> dereference()
仅在查找基地时才提供别名。
present(Type) -> filter()
类型
创建一个筛选器,对属性类型存在进行筛选。
substrings(Type, [SubString]) -> filter()
类型
创建一个筛选子字符串的过滤器。
equalityMatch(Type, Value) -> filter()
类型
创建一个等式过滤器。
greaterOrEqual(Type, Value) -> filter()
类型
创建一个更大或相等的过滤器。
lessOrEqual(Type, Value) -> filter()
类型
创建一个较小或相等的过滤器。
approxMatch(Type, Value) -> filter()
类型
创建一个近似匹配过滤器。
extensibleMatch(MatchValue, OptionalAttrs) -> filter()
类型
创建可扩展的匹配筛选器。例如,
eldap:extensibleMatch("Bar", [{type,"sn"}, {matchingRule,"caseExactMatch"}]))
创建一个过滤器,caseExactMatch对该属性执行一次sn并与该值匹配"Bar"。dnAttributesis 的默认值false。
'and'([Filter]) -> filter()
类型
创建一个过滤器,其中所有Filter一定是真的。
'or'([Filter]) -> filter()
类型
创建一个筛选器,其中至少有一个Filter一定是真的。
'not'(Filter) -> filter()
类型
否定过滤器。
| eldap | ||
|---|---|---|
| eldap | 详细 |
Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。
| 主页 | https://www.erlang.org/ |
| 源码 | https://github.com/erlang/otp |
| 版本 | 20 |
| 发布版本 | 20.1 |
加载中,请稍侯......