openLDAP后读控制:缺少值

时间:2014-10-20 09:37:08

标签: ldap openldap

我试图在我的LDAP客户端应用程序中实现LDAP后读控制,目前我无法确切地知道如何对带有控件的数据包进行编码,以便openLDAP可以识别它。更具体 - 我有postRead控件的controlValue字段的问题。

根据RFC4527 - " controlValue,一个OCTET STRING,包含一个BER编码的AttributeSelection [RFC4511],"。 来自RFC4511 -

AttributeSelection ::= SEQUENCE OF selector LDAPString
                        -- The LDAPString is constrained to
                        -- <attributeSelector> in Section 4.5.1.8

所以,这意味着(如果我做对了)controlValue是&#34; SEQUENCE OF LDAPStrings&#34;,每个LDAPStrings都是包含某个属性名称的OCTET STRING。然而,似乎我误解了一些东西,但无法弄清楚是什么。

这是我发送给openLDAP服务器的数据包:    packet being sent 这是我发送给openLDAP服务器的数据包DUMP: dump of packet being sent 以下是服务器的安装: packet received

有什么问题?

1 个答案:

答案 0 :(得分:1)

我已经弄清楚了。根据RFC 4511:

Control ::= SEQUENCE {
     controlType             LDAPOID,
     criticality             BOOLEAN DEFAULT FALSE,
     controlValue            OCTET STRING OPTIONAL }

来自RFC 4527:

controlValue, an OCTET
   STRING, contains a BER-encoded AttributeSelection

这意味着控制值不是“SESEENCE OF LDAPStrings”,而是一个OCTET STRING,它包含该序列。这解决了这个问题。