bdb_dn2entry("cn=kerberoskdc,cn=config,dc=example,dc=com") 是啥意思?

Posted

技术标签:

【中文标题】bdb_dn2entry("cn=kerberoskdc,cn=config,dc=example,dc=com") 是啥意思?【英文标题】:bdb_dn2entry("cn=kerberoskdc,cn=config,dc=example,dc=com") Meaning?bdb_dn2entry("cn=kerberoskdc,cn=config,dc=example,dc=com") 是什么意思? 【发布时间】:2017-12-24 17:08:08 【问题描述】:

第三行是什么意思。我在绑定用户时运行我的 openldap 服务器时收到此消息。

entry_decode(cn=user,dc=example,dc=com)
5a3fd996 => bdb_search
5a3fd996 bdb_dn2entry("cn=kerberoskdc,cn=config,dc=example,dc=com")

【问题讨论】:

【参考方案1】:

这是slapd 请求其后端加载与可分辨名称"cn=kerberoskdc,cn=config,dc=example,dc=com" 对应的数据。在执行 ldap 操作时,这种情况经常发生,dn 用作快速查找的主键。

bdb_dn2entryslapd的后端使用的内部函数,它在执行ldap操作时调用(您应该可以在出现此行的日志文件中看到哪个操作触发了调用)。

Openldap 使用普通 slapd 数据库的后端。后端做 响应 LDAP 存储或检索数据的实际工作 要求。后端可以静态编译成 slapd,或者当 模块支持已启用,它们可能会被动态加载。

OpenLDAP 的 bdb abd hdb 后端使用 Oracle Berkeley DB (BDB) 包来存储数据。

bdb_dn2entry 是一个实际从数据库中检索数据的函数。它与其他 ldap 的后端共享(不仅用于 bdb/hdb),因为它在源代码的头文件proto-bdb.h 中定义为函数原型:

/**
 * dn2entry.c
 */
#define bdb_dn2entry                BDB_SYMBOL(dn2entry)

int bdb_dn2entry LDAP_P(( Operation *op, DB_TXN *tid,
    struct berval *dn, EntryInfo **e, int matched,
    DB_LOCK *lock ));

真正的动作发生在dn2entry.c:

dn2entry 在缓存/索引中查找dn 并返回相应的条目。如果未找到请求的 DN 且 matchedTRUE,则返回 DN 的最近祖先的信息。否则EntryInfo eNULL

【讨论】:

EricLavault..感谢您的详细回答。我在执行此操作时收到该消息con.auth 'cn=user,dc=example,dc=com', 'user'。你能告诉我为什么当我提到的 dn 不同时会触发不同的 dn。 @Praneetha 抱歉回复晚了。似乎您有一个将 Kerberos 设置为“主”身份验证系统的配置(因此是 cn=kerberoskdc 部分)。所以我认为每次通过 ldap 对用户进行身份验证时,服务器首先处理请求 - 像往常一样使用 bind dn 来验证请求,然后在成功时加载相应的条目以获取该用户的授权数据,然后 (!Assumption!) 它读取 kdc 条目以便能够将身份验证委托给 KDC。您可能需要查看Kerberos Documentation。

以上是关于bdb_dn2entry("cn=kerberoskdc,cn=config,dc=example,dc=com") 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

Python习题集

text ker按下进入ESCAPE

日常巡检(脚本)

LinearSVC 和 SVC(kernel="linear") 有啥区别?

一,kubeadm初始化集群

Java跳过“While”循环[关闭]