On Jan 26, 2011, at 9:15 AM, masarati@aero.polimi.it wrote:
The complexity of handling this nonsense in libldap seems not worth the effort;
Ando, you are too kind to refer this extension as 'nonsense'. It's worse than nonsense, it's crap.
The spec you pointed at says: "LDAP servers often place limits on the maximum number of attribute values that can be retrieved in a single query."
I'd reword that as "One specific LDAP server places limits on the maximum number of attribute values that can be retrieved in a single query."
The spec fails to say why would a server want to do that. I cannot think of any good reason to do precisely that. While I can understand a desire to place limits on what clients can retrieve, I don't see why one would distinguish between a single query and a set of queries. I can also see it desirable to allow a client to page through results (but that's a different matter, this is about forcing paging onto clients).
It is incredibly stupid to require clients to use multiple operations to obtain information for which the protocol allowed to be fetched in a single operation, and this is why I refer to this as "crap".
:)
A major problem with paging, whether server-forced or at client-option, is result set coherency due to changes to the DIT between when various page operations are obtain. This can lead to problems such a member of a group not appearing in the results. While one might argue client might be able to reasonable deal with coherency issues, most client developers won't. This will lead to a range of security issues creeping into directory applications.
So while I don't generally oppose introduction of paging extensions at the client option, I think the specifications should warn that the clients using them need to be designed to handle data coherency issues. However, most designers of such extensions seem to have put no thought into this issue at all.
Well, I don't see paged results as a way to introduce more inconsistency than a regular search operation, since nowhere in the specs I see that the collection of the entries returned by a search are consistent with the entries matching the search request at a specific time (e.g. when the operation was initiated or so). As a consequence, clients need be aware of the fact that search results can be inherently inconsistent, paging or not.
I do generally oppose introduction of non-truly optional extensions in LDAP (and in other application protocols). One would think that a requirement that extensions to a protocol be truely optional would go without saying, but in IETF we actually found it necessary to explicitly state this in the BCP governing LDAP extensions.
That BCP will effectively stop non-truly optional extension proposal as this from gaining Standard Track status in the IETF.
I think we might consider working this around in proxy backends (much like we did for unsolicited paged results response in back-meta, ITS#6664, which could be added to back-ldap as well).
I would think it easier to reconfigure AD not to have the limits which cause this sort of paging.
Of course. The whole discussion about this issue (and others) and often the thrust that pushes the development of many features in the proxy backends (and other features, like slapo-rwm, slapo-translucent and more) is the practical impossibility to affect the configuration of one or more remote servers.
p.