On 2012-06-05 13:42, Patrick Hemmer wrote:
Is there any way to create an ACL rule which will match if a client certificate was used on the connection or not? I'd like to do an ACL such as
to attrs=userPassword by peername.ip="1.2.3.0%255.255.255.0" auth by client_ssf="64" auth
Also set olcTLSVerifyClient=try
This will let our internal network authenticate against ldap without needing a client cert, but anyone outside our internal network must have one. We would then use our own CA to create certificates for all the clients and tell OpenLDAP to trust only that CA. Obviously client_ssf doesnt exist, but is there another way of accomplishing this goal?
I wrote a proof of concept dynacl that essentially does this. The ACL looked something like:
access to attrs=userPassword by dynacl/clientAuth auth
All the dynacl does is determine if there is an authid in the SASL context. If so, a client certificate was used and access can be granted.
Examples of dynacls can be found in contrib/slapd-modules/acl.