https://bugs.openldap.org/show_bug.cgi?id=9468

          Issue ID: 9468
           Summary: slapd-ldap does anonymous bind even if rebind-as-user
                    is set
           Product: OpenLDAP
           Version: unspecified
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: ---
         Component: backends
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

When back-ldap retries bind operation after connection retry, it will do it as
anonymous even if rebind-as-user is set to yes.  

Expected behavior is that (re)bind is done with user's credentials from the
initial bind operation.

I observed following (Warning: I might have understood details of the code
incorrectly):

When rebind-as-user is set and bind operation from client is processed, proxy
will copy the credentials to ldapconn_t representing the remote LDAP
connection. When remote LDAP connection is closed (e.g. by the proxy itself due
to timeout), the bind credentials information is lost when freeing the old
ldapconn_t.  At this point, client still holds the connection to proxy and is
unaware of the remote connection being lost.  Proxy then re-establishes the
connection and "synthetically" generates new bind itself, but since it does not
have the credentials stored in memory anymore, it sends anonymous bind on
behalf of the client.

As a side effect, slapd currently crashes if remote server does not allow
anonymous bind and responds with InvalidCredentials instead. The crash is due
to assert(), which is handled in separate issue
https://bugs.openldap.org/show_bug.cgi?id=9288

-- 
You are receiving this mail because:
You are on the CC list for the issue.

Reply via email to