|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
多去关于PHP的网站,尤其有很多经典的文章,多读读这些文章显然是有好处的。
我如今的老板曾请求我为企业外部互联网的Web办事供应一种尺度的身份验证办法。我碰到的一个次要成绩就是咱们公司次要利用了两种平台:UNIX和Windows。所以,我的第一个设法其实不很胜利:它请求每一个员工都利用UNIX或Linux而保持Windows。
我以为处理如今的UNIX/Windows成绩的最好办法就是使用PHP的LDAP特征。因为LDAP办事器,请求我利用现有的体系,次要指的是一个伟大的Microsoft Exchange Server体系。我十分乐意利用Exchange,它很牢靠,并且LDAP特征的利用和设置装备摆设也极其复杂。不外,请你注重:这套计划就身份验证角度来看并非最平安的。假如有较初等级的平安需求,我激烈建议你采取LDAP和SSL。
从哪里入手下手进修
为了让你入门,我给出了一个PHP LDAP函数的清单并对函数的功效赐与扼要申明。然后,我将演示若何创立到LDAP办事器的毗连并验证用户。为了代码复杂起见,我将演示PHP毗连的功效和若何绑定到LDAP办事器。
一对绝配:PHP和LADP
上面是我在例子中将要利用的函数的清单。网上有相干材料。
ldap_connect—用来毗连LDAP办事。
ldap_bind—用来绑定到特定的LDAP目次。
ldap_error—从LDAP办事器上取得毛病信息。
ldap_search—用来入手下手搜刮。
ldap_get_entries—从搜刮了局中取得多个了局。
ldap_close—封闭LDAP毗连。
如今我在例子中演示若何利用第一个函数(代码清单A)并恰当引见该函数的功效。
<?php
// LDAP variables
$ldap[‘user’] = ‘uname’;
$ldap[‘pass’] = ‘password’;
$ldap[‘host’] = ‘ldap.example.com’;
$ldap[‘port’] = 389;
$ldap[‘dn’] = ‘cn’.$ldap[‘user’].’,ou=Department,o=Company Name’;
$ldap[‘base’] = ‘’;
// connecting to ldap
$ldap[‘conn’] = ldap_connect( $ldap[‘host’], $ldap[‘port’] )
or die( “Could not connect to {$ldap[‘host’]}” );
?>
将会前往一个到LDAP办事器的毗连(也称为资本,即resource)。ldap_connect函数有两个参数:主机(host)和端口。第一个参数:主机就是LDAP主机称号,第二个参数是LDAP运转的端口。默许情形下,LDAP利用的端标语为389。假如你需求到LDAP办事器的一个平安毗连,你可以把参数host改成一个你可以会见的LDAP办事器的URL,以下所示:
$ldap[‘conn’] = ldap_connect( “ldaps://ldap.example.com” );
因为你指定了URL而不是办事器称号,在这类办法下,你就不需求利用端口参数了。需求切记的一点就是切实称号需求与加密套接字协定层证书(the SSL certificate)对应。
<?php
// LDAP variables
$ldap[‘user’] = ‘uname’;
$ldap[‘pass’] = ‘password’;
$ldap[‘host’] = ‘ldap.example.com’;
$ldap[‘port’] = 389;
$ldap[‘dn’] = ‘cn’.$ldap[‘user’].’,ou=Department,o=Company Name’;
$ldap[‘base’] = ‘’;
// connecting to ldap
$ldap[‘conn’] = ldap_connect( $ldap[‘host’], $ldap[‘port’] )
or die( “Could not connect to {$ldap[‘host’]}” );
// binding to ldap
$ldap[‘bind’] = ldap_bind( $ldap[‘conn’], $ldap[‘dn’], $ldap[‘pass’] );
?>
演示了若何用用户名和口令来绑定到办事器。我创立了一个适合的域名(domain name ,DN)并用用户的口令来正当毗连到LDAP。咱们经由过程利用域名和口令就能够让LDAP办事器经由过程身份认证并答应绑定毗连,如许咱们就胜利的绑定上了。ldap_bind的前往值是一个布尔类型。咱们可以依据前往值判别用户的登录证书是不是无效。当这个进程停止后,你就能够晓得用户身份是不是失掉了认证。
假如产生了毛病会如何?挪用ldap_error函数是判别产生了甚么毛病的好办法。ldap_error函数前往了一个字符串,个中包括了LDAP办事器产生的最初毛病的信息。
在
<?php
// LDAP variables
$ldap[‘user’] = ‘uname’;
$ldap[‘pass’] = ‘password’;
$ldap[‘host’] = ‘ldap.example.com’;
$ldap[‘port’] = 389;
$ldap[‘dn’] = ‘cn’.$ldap[‘user’].’,ou=Department,o=Company Name’;
$ldap[‘base’] = ‘’;
// connecting to ldap
$ldap[‘conn’] = ldap_connect( $ldap[‘host’], $ldap[‘port’] )
or die( “Could not connect to server {$ldap[‘host’]} );
// binding to ldap
$ldap[‘bind’] = ldap_bind( $ldap[‘conn’], $ldap[‘dn’], $ldap[‘pass’] );
if( !$ldap[‘bind’] )
{
echo ldap_error( $ldap[‘conn’] );
exit;
}
?>
中,我向剧本中添加了ldap_error函数,假如绑定到LDAP办事器的用户身份没有失掉确认,那末代码将加入运转。该函数前往一个字符串,该字符串包括了发送到LDAP办事器的最初一条指令发生的毛病信息。假如你按给定用户名和口令的绑定没有胜利登录,那末毛病信息将包括这对有效的用户名和口令。
在咱们的最初一个例子中
<?php
// LDAP variables
$ldap[‘user’] = ‘uname’;
$ldap[‘pass’] = ‘password’;
$ldap[‘host’] = ‘ldap.example.com’; 本文链接http://www.cxybl.com/html/wlbc/Php/20121126/34395.html会PHP吗?会,我会把一加一的运算写在函数里,然后调用啦! |
|