我试图在我的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服务器的数据包: 这是我发送给openLDAP服务器的数据包DUMP: 以下是服务器的安装:
有什么问题?
答案 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,它包含该序列。这解决了这个问题。