我正在尋找一種通過LDAP(使用Active Directory作爲提供程序)通過LDAP對用戶進行身份驗證的方法。理想情況下,它應該能夠在IIS 7上運行(adLDAP在Apache上運行)。任何人都做過類似的事情,取得成功?在PHP中使用LDAP進行身份驗證通過Active Directory
- 編輯:我更喜歡有代碼的圖書館/班級準備好去...當有人已經這樣做時,發明輪子會很愚蠢。
我正在尋找一種通過LDAP(使用Active Directory作爲提供程序)通過LDAP對用戶進行身份驗證的方法。理想情況下,它應該能夠在IIS 7上運行(adLDAP在Apache上運行)。任何人都做過類似的事情,取得成功?在PHP中使用LDAP進行身份驗證通過Active Directory
導入全庫似乎效率不高時,所有你需要的是本質上的兩行代碼...
$ldap = ldap_connect("ldap.example.com");
if ($bind = ldap_bind($ldap, $_POST['username'], $_POST['password'])) {
// log them in!
} else {
// error message
}
PHP有庫:http://ca.php.net/ldap
PEAR也有許多包:http://pear.php.net/search.php?q=ldap&in=packages&x=0&y=0
我也沒有用,但我是在一個點去,他們似乎像他們應該工作。
我喜歡類,你可以在你的項目中只使用這個類,沒有Zend Framework。
我只需將用戶憑據傳遞給ldap_bind()即可完成此操作。
http://php.net/manual/en/function.ldap-bind.php
如果賬戶可以綁定到LDAP,它是有效的;如果它不能,那不是。如果你所做的只是認證(不是賬戶管理),我不認爲需要一個庫。
對於那些尋找一個完整的例子退房http://www.exchangecore.com/blog/how-use-ldap-active-directory-authentication-php/。
我已經測試了這個連接在Windows Server 2003和Windows Server 2008 R2域控制器從Windows Server 2003 Web服務器(IIS6),並從Windows Server 2012企業運行IIS 8
你會認爲,只需在Active Directory中對用戶進行身份驗證就可以非常簡單地在PHP中使用LDAP,而無需庫。但是有很多東西可能使其複雜化很快:
在大多數情況下,使用支持上述內容的LDAP庫實際上更容易。我最終結束了自己的庫,處理所有上述要點:LdapTools(好吧,不只是爲了驗證,它可以做更多)。它可用於如下所示:上述
use LdapTools\Configuration;
use LdapTools\DomainConfiguration;
use LdapTools\LdapManager;
$domain = (new DomainConfiguration('example.com'))
->setUsername('username') # A separate AD service account used by your app
->setPassword('password')
->setServers(['dc1', 'dc2', 'dc3'])
->setUseTls(true);
$config = new Configuration($domain);
$ldap = new LdapManager($config);
if (!$ldap->authenticate($username, $password, $message)) {
echo "Error: $message";
} else {
// Do something...
}
的authenticate呼叫將:
還有其他圖書館也需要這樣做(如Adldap2)。然而,我覺得有必要提供一些額外的信息,因爲最有投票權的答案實際上是一個安全風險,依賴於沒有輸入驗證而不使用TLS。
我認爲drupal有一個模塊用於登錄 – redben 2010-06-20 11:29:03