{"id":535,"date":"2009-10-24T23:56:00","date_gmt":"2009-10-24T15:56:00","guid":{"rendered":"http:\/\/note.systw.net\/note\/?p=535"},"modified":"2023-11-04T00:20:15","modified_gmt":"2023-11-03T16:20:15","slug":"php-ldap","status":"publish","type":"post","link":"https:\/\/systw.net\/note\/archives\/535","title":{"rendered":"PHP LDAP"},"content":{"rendered":"\n<p>php\u4f7f\u7528ldap<\/p>\n\n\n\n<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<\/p>\n\n\n\n<p>\u74b0\u5883\u9810\u8a2d\u5982\u4e0b<br>ldap\u4e3b\u6a5f\u57f7\u884cbind_anon\u505c\u7528\u533f\u540d\u7e6b\u7d50<br>ldap\u4e3b\u6a5f\u70ba10.20.30.40<br>ldap\u4e3b\u6a5f\u4f7f\u7528\u7684port\u70ba389<br>\u9a57\u8b49\u7528\u7684dn\u70bauid=raymond,ou=people,dc=study,dc=net<br>\u9a57\u8b49\u7528\u7684dn\u5bc6\u78bc\u70ba1234567<br>\u8981\u986f\u793a\u76f8\u95dc\u8cc7\u6599\u7684user\u662fraymond<br><br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u7b2c\u4e00\u7a2e\u60c5\u6cc1<\/strong><\/h2>\n\n\n\n<p>1<br>dn\u7d50\u69cb\u76f8\u540c\u5982\u4e0b<br>uid=raymond,ou=people,dc=study,dc=net<br>uid=tom,ou=people,dc=study,dc=net<br>uid=peter,ou=people,dc=study,dc=net<br><br>\u53ef\u7528\u4ee5\u4e0b\u7a0b\u5f0f\u78bc\u89e3\u6c7a<\/p>\n\n\n\n<p>\/\/ldap\u76f8\u95dc\u53c3\u6578<br>$ldap[&#8216;host&#8217;] = &#8216;10.20.30.40&#8217;;<br>$ldap[&#8216;port&#8217;] = 389;<br>$ldap[&#8216;user&#8217;] = &#8216;raymond&#8217;;<br>$ldap[&#8216;dn&#8217;] = &#8216;uid=&#8217;.$ldap[&#8216;user&#8217;].&#8217;,ou=people,dc=study,dc=net&#8217;;<br>$ldap[&#8216;dnpass&#8217;] = &#8216;1234567&#8217;;<br>$ldap[&#8216;base&#8217;] = &#8216;ou=people,dc=study,dc=net&#8217;;<\/p>\n\n\n\n<p>\/\/\u8207ldap\u9023\u7dda<br>$ldapconnect=ldap_connect($ldap[&#8216;host&#8217;],$ldap[&#8216;port&#8217;])or die(&#8216;Could not connect to server&#8217;);<\/p>\n\n\n\n<p>\/\/\u9a57\u8b49ldap\u5e33\u5bc6<br>$ldapbind=ldap_bind($ldapconnect,$ldap[&#8216;dn&#8217;],$ldap[&#8216;dnpass&#8217;]);<br>if(!$ldapbind){echo ldap_error($ldapconnect);exit;}<br><br>\/\/\u5230\u6b64\u8a8d\u8b49\u968e\u6bb5\u4ee5\u7d50\u675f,\u4ee5\u4e0b\u662f\u9078\u64c7\u6027code<\/p>\n\n\n\n<p>\/\/\u53d6\u5f97uid=$ldap[&#8216;user&#8217;]\u7684\u76f8\u95dc\u8cc7\u8a0a<br>$ldapresult=ldap_search($ldapconnect,$ldap[&#8216;base&#8217;],&#8217;uid=&#8217;.$ldap[&#8216;user&#8217;]);<br>if($ldapresult){<br>\/\/\u5c07$ldap[&#8216;user&#8217;]\u7684\u8cc7\u8a0a\u5b58\u5230$ldapinfo\u9663\u5217<br>$ldapinfo=ldap_get_entries($ldapconnect,$ldapresult);<br>}<\/p>\n\n\n\n<p>\/\/\u986f\u793a$ldapinfo\u9663\u5217\u5167\u8cc7\u6599<br>if($ldapinfo){<br>print_r($ldapinfo);<br>}<\/p>\n\n\n\n<p>\/\/\u95dc\u9589ldap\u9023\u7dda<br>ldap_close($ldapconnect);<\/p>\n\n\n\n<p>?&gt;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u7b2c2\u7a2e\u60c5\u6cc1<\/strong><\/h2>\n\n\n\n<p><strong>1<br>dn\u7d50\u69cb\u4e0d\u540c,\u5982\u4e0b<\/strong><br>uid=raymond,ou=sales,ou=taipei,dc=study,dc=net<br>uid=tom,ou=account,dc=study,dc=net<br>uid=peter,ou=technology,dc=study,dc=net<br><strong>2<br>\u5bc6\u78bc\u5132\u5b58\u5728userpassword\u6b04\u4f4d<\/strong><br><br>\u53ef\u7528\u4ee5\u4e0b\u7a0b\u5f0f\u78bc\u5132\u5b58<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ldap&#91;'host'] = '10.20.30.40';\n$ldap&#91;'port'] = 389;\n$ldap&#91;'uid']='raymond';\n$ldap&#91;'dnpw']='12345676';\n$ldap&#91;'basedn']=\"dc=study,dc=net\";\n\n\/\/ connecting to ldap\n$ldap&#91;'conn']=ldap_connect($ldap&#91;'host'],$ldap&#91;'port'])or die('Could not connect to server');\n\n\/\/search uid=\"raymond\"\n$filter=\"(&amp;(uid=\".$ldap&#91;'uid'].\")(userpassword=*))\";\n$sr=ldap_search($ldap&#91;'conn'],$ldap&#91;'basedn'],$filter,array(\"uid\"));\n\n\/\/get search result\n$ldapinfo = ldap_get_entries($ldap&#91;'conn'],$sr);\n$ldap&#91;'dn']=$ldapinfo&#91;0]&#91;'dn'];\n\n\/\/ binding to ldap\n$ldap&#91;'bind']=@ldap_bind($ldap&#91;'conn'],$ldap&#91;'dn'],$ldap&#91;'dnpw']);\nif($ldap&#91;'bind']){echo 'auth ok'; }<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p>&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<br><br><strong>ldap_get_entries\u6293\u53d6\u7684\u9663\u5217\u683c\u5f0f<\/strong><\/p>\n\n\n\n<p>\u82e5ldap\u7684\u683c\u5f0f\u70ba<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dn: uid=raymond, ou=people, dc=study, dc=net\nuid: raymond\ncn: raymond\nobjectClass: account\nobjectClass: posixAccount\nobjectClass: top\nobjectClass: shadowAccount\nshadowLastChange: 611773\nloginShell: \/usr\/bin\/tcsh\nuidNumber: 1178\ngidNumber: 10\nhomeDirectory: \/home\/raymond\nuserPassword:: e2NyeXB0fVdQZWt5T3hiYzYzY1U=<\/code><\/pre>\n\n\n\n<p>\u5247\u4f7f\u7528ldap_get_entries\u6293\u51fa\u4f86\u7684\u8cc7\u6599\u6703\u5982\u4e0b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Array (<br>&#91;count] => 1<br>&#91;0] => Array (<br>\u3000\u3000&#91;dn] => uid=raymond2, ou=people, dc=study, dc=net )<br>\u3000\u3000&#91;count] => 9<br>\u3000\u3000&#91;0] => uid<br>\u3000\u3000&#91;uid] => Array (<br>\u3000\u3000\u3000\u3000&#91;count] => 1<br>\u3000\u3000\u3000\u3000&#91;0] => raymond )<br>\u3000\u3000&#91;1] => cn<br>\u3000\u3000&#91;cn] => Array (<br>\u3000\u3000\u3000\u3000&#91;count] => 1<br>\u3000\u3000\u3000\u3000&#91;0] => raymond )<br>\u3000\u3000&#91;2] => objectclass<br>\u3000\u3000&#91;objectclass] => Array (<br>\u3000\u3000\u3000\u3000&#91;count] => 4<br>\u3000\u3000\u3000\u3000&#91;0] => account<br>\u3000\u3000\u3000\u3000&#91;1] => posixAccount<br>\u3000\u3000\u3000\u3000&#91;2] => top<br>\u3000\u3000\u3000\u3000&#91;3] => shadowAccount )<br>\u3000\u3000&#91;3] => shadowlastchange<br>\u3000\u3000&#91;shadowlastchange] => Array (<br>\u3000\u3000\u3000\u3000&#91;count] => 1<br>\u3000\u3000\u3000\u3000&#91;0] => 611773 )<br>\u3000\u3000&#91;4] => loginshell<br>\u3000\u3000&#91;loginshell] => Array (<br>\u3000\u3000\u3000\u3000&#91;count] => 1<br>\u3000\u3000\u3000\u3000&#91;0] => \/usr\/bin\/tcsh )<br>\u3000\u3000&#91;5] => uidnumber<br>\u3000\u3000&#91;uidnumber] => Array (<br>\u3000\u3000\u3000\u3000&#91;count] => 1<br>\u3000\u3000\u3000\u3000&#91;0] => 1178 )<br>\u3000\u3000&#91;6] => gidnumber<br>\u3000\u3000&#91;gidnumber] => Array (<br>\u3000\u3000\u3000\u3000&#91;count] => 1<br>\u3000\u3000\u3000\u3000&#91;0] => 10 )<br>\u3000\u3000&#91;7] => homedirectory<br>\u3000\u3000&#91;homedirectory] => Array (<br>\u3000\u3000\u3000\u3000&#91;count] => 1<br>\u3000\u3000\u3000\u3000&#91;0] => \/home\/raymond )<br>\u3000\u3000&#91;8] => userpassword<br>\u3000\u3000&#91;userpassword] => Array (<br>\u3000\u3000\u3000\u3000&#91;count] => 1<br>\u3000\u3000\u3000\u3000&#91;0] => {crypt}WPekyOxbc63cU )<br>\u3000\u3000<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>php\u4f7f\u7528ldap &#8230;&#8230;&#038;#8230 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[14],"tags":[],"class_list":["post-535","post","type-post","status-publish","format-standard","hentry","category-develop"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/535","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/comments?post=535"}],"version-history":[{"count":0,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/posts\/535\/revisions"}],"wp:attachment":[{"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/media?parent=535"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/categories?post=535"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/systw.net\/note\/wp-json\/wp\/v2\/tags?post=535"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}