2014-10-20 29 views
0

我試圖在LDAP客戶端應用程序中實現LDAP讀取後控制,目前我無法弄清楚具有控件的數據包是如何編碼的,所以openLDAP可以識別它。更具體 - 我有postRead控件的controlValue字段的問題。openLDAP讀後控制:值不存在

根據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是「LDAPStrings序」,並且每個LDAPStrings是包含一些屬性的名稱的八位組串。但是,似乎我誤解了某些東西,但無法弄清楚什麼。

這裏是包,我發送給OpenLDAP服務器: packet being sent 這裏是包的DUMP,我發送給OpenLDAP服務器: dump of packet being sent 下面是服務器的answear: packet received

什麼是錯的?

回答

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 

至極意味着控制值是不是 「LDAPStrings序」,而是一個OCTET STRING,至極包含序列。這解決了這個問題。