[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Preoperation Plugin Questions
Hi,
I'm writing an preoperation authentication plugin for OpenLDAP, but I
have trouble finding any documentation whatsoever on this. So most of
what I know comes from tutorials like this one from Oracle:
http://docs.oracle.com/cd/E19099-01/nscp.dirsvr416/816-6683-10/custauth.htm
But since this is not official documentation and I find the execution
paths hard to trace, I have two questions stemming from above guide:
1) The guide says that for an authentication preop plugin,
Your pre-operation plug-in function is responsible for sending the
result code to the client and for setting the DN and
authentication method for the connection.
Okay, so I do that. Like in the code example, I set the connection's
DN to the value I got from the 'pb' in the first place:
slapi_pblock_set(pb, SLAPI_CONN_DN, slapi_ch_strdup(dn));
But setting the authentication type fails:
slapi_pblock_set(pb, SLAPI_CONN_AUTHTYPE, SLAPD_AUTH_SIMPLE);
This is no real error though, it's simply not implemented: See
http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=servers/slapd/slapi/slapi_pblock.c;h=2c9fc202#l1267
case SLAPI_CONN_AUTHMETHOD:
...
/* These parameters cannot be set */
rc = PBLOCK_ERROR;
break;
(This was noted in 2006 already, with no reply on this list:
http://www.openldap.org/lists/openldap-software/200601/msg00044.html )
So basically it boils down to: Do I have to do *any* other stuff
except for sending back the result code? Like this:
slapi_send_ldap_result(pb, rc, NULL, NULL, 0, NULL);
2) What is the preferred return value for a plugin function? Most
(other) documentations and the code hints at this:
i) return 0 if you handled the authentication
ii) return 1 if you want successive plugins/backends/... to
handle the authentication
Is this correct? Or should I use the more suggestive
SLAPI_BIND_SUCCESS and SLAPI_BIND_FAIL?
Thanks!
Julius
P.S.: What I'm actually trying to achieve is to do RADIUS
authentification via an external library. But I want to send the
client's IP in a Calling-Station-Id attribute, so I cannot simply
write a password check function, right? If you got any ideas that are
better than a preop module, please tell me...