Re: Re: LDAP (NDS) authentication example...
| From: | joshua | Date: | Wed, 11 Sep 2002 23:37:22 +0000 |
| Subject: | Re: Re: LDAP (NDS) authentication example... | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-116060@lists.php.net to get a copy of this message | ||
i'm not sure if i follow you. i have never used ldap to write authentication scripts as i've only used the .htaccess method.
to retrieve data you need to bind using a username/password combination that is valid. i guess you could test your user's username/password by using it to attempt a bind.
the following is copied verbatim from the manual's user notes:
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
rksmith2@earthlink.net (03-Jan-2002 11:46)
It took quite a while to figure out how to do LDAP authentication as there wasn't a complete example ... just some cryptic notes about passwords. So, here's what I came up with that works for me:
// $inp_uid contains the user id to be authenticated
// $inp_passwd contains the plain text password to be authenticated
$ds=ldap_connect("ldap.someserver.com");
//substitute the real host name in the previous statement
if ($ds) {
$r=@ldap_bind($ds); // this is an anonymous bind
$st_search="uid=$res_uid";
// need to set the right root search information in next statement.
// Your requirement may be different
$sr=ldap_search($ds,"ou=mycompany.com,o=My Company", "$st_search");
$info = ldap_get_entries($ds, $sr);
for ($i=0; $i<$info["count"]; $i++) {
$dn=$info[$i]["dn"];} // I now know the dn needed to authenticate // now bind to see if the uid and password work // the password is still plain text $r=@ldap_bind($ds, $dn, $inp_passwd); if ($r) {
$str_passok="Yes";// ldap_bind will return TRUE if everything matches } else {
$str_passok="No";// otherwise ldap_bind will return FALSE } ldap_close($ds); } else { $error_string="Error -- unable to connect to ldap.someserver.com"; } I'm sure that there's more error checking that needs to be done, but this provides the basic skeleton.... # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Joshua Richard Whittaker wrote:
If on the other hand you actually want to retrieve data from your LDAP system then i suggest reading the manual. it's not actually a lot harder that connecting to RDBMS. I managed to get a working script straight off the manual page. http://www.php.net/manual/en/ref.ldap.phpUnfortunately, what I know about LDAP would fit on the head of a very small object (I.E. a pin), so I'm still getting used to the whole idea of LDAP... So, with NDS, I would just do an ldp_bind to the proper tree, with a username and password, and testing for that would tell me if the Username/Password combination is valid, or would there be something further I'd have to do?.... Thanks! Richard W.