我在PHP中有一個網站,並且想要根據Azure Active Directory驗證用戶身份。使用ldap_connect和bind我沒有任何問題可以對我們公司的本地AD服務器執行此操作。從PHP Web應用程序對Azure Active Directory進行身份驗證用戶
function checkADAccount($username, $password)
{
$adServer = "myADServer";
$ldaprdn = 'myDomain' . "\\" . $username;
$ldap = ldap_connect($adServer);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
$bind = @ldap_bind($ldap, $ldaprdn, $password);
if ($bind) {
@ldap_close($ldap); // Verbindung schließen
return true;
} else {
return false;
}
}
但我的應用程序在亞馬遜網絡服務(AWS)主辦,是不是在同一個域中,所以我不能用這種方式。 使用ldap_connect將此函數綁定到本公司的本地AD服務器。但是我的應用程序託管在亞馬遜網絡服務(AWS)上,並且不在同一個域中,所以我不能用這種方式。
我使用Azure的ClientId和我的公司的密鑰測試了graphapi。所以我可以讀取用戶數據,但我沒有看到任何檢查用戶/密碼組合的可能性。我只想檢查一下,如果有一個用戶使用這個密碼,我不需要從那裏讀取它。
所以,我想通過改變廣告服務器的參數和用戶
$ldaprdn = 'sAMAccountname=' . $username . ',cn=users' . ',dc=myDomain,dc=com';
的修改從上面的LDAP解決方案,但我allwaws得到:「警告:的ldap_bind():無法綁定到服務器:無法聯繫LDAP服務器「。我試過這個adServer的多個版本,但是任何定位器都是綁定的。
你知道錯誤在哪裏嗎?我建議使用ldap_connect是非常方便的,特別是我不知道哪個服務器地址是正確的,以及我如何告訴ClientId和密鑰。
需要做同樣的事情,但在代碼示例中沒有看到實際驗證用戶登錄Azure AD的任何內容? –
@mederomuraliev,請參閱https://stackoverflow.com/questions/33509761/connect-to-azure-active-directory-from-php-web-application –