Recently, I thought I needed to use simpleldap
–it turned out that I instead needed to reconfigure NGINX. At any rate, this was my experience with simpleldap
.
Initially, I had this issue:
Modules/LDAPObject.c:18:10: fatal error: 'sasl.h' file not found #include <sasl.h> ^ 1 error generated. error: command 'cc' failed with exit status 1
In order to work around that, I used this SO post to do the following:
sudo pip install simpleldap --global-option=build_ext --global-option="-I$(xcrun --show-sdk-path)/usr/include/sasl"
That did the trick. The next thing to do was create a connection to the LDAP server. The important thing here is to remember to pass the port information separately as an integer, not as a string, and not included in the server host name.
conn = simpleldap.Connection("some-server.corp.com",port=389)
Next, you can use the conn
object to perform a search
or a get
. the difference is that a search
returns a (possible empty) list, and a get
returns either an object, or an error if the thing that you’re looking for does not exist. That means you should either search
before you get
, or call a get
from within a try-except
block.
results = conn.search("uid=c.johnson",base_dn="dc=corp,dc=com") result = conn.get("uid=c.johnson",base_dn="dc=corp,dc=com")
Once you have the result(s) for a user or users, you can then try to authenticate some password. You do that by calling the authenticate
method on the connection object, conn
. You pass the dn
attribute of the result
as the first argument, and the password string as the second argument. Then authenticate
will return True
or False
.
conn.authenticate( result.dn, somePassword )