php
  • azure
  • amazon-web-services
  • active-directory
  • azure-active-directory
  • 2016-07-04 79 views 2 likes 
    2

    我在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和密鑰。

    回答

    1

    目前,Azure AD不支持LDAP連接。它提供了OAuth2身份驗證和授權。有關Azure AD場景的​​詳細信息,請參閱Authentication Scenarios for Azure AD

    爲了您的要求對域中的用戶進行身份驗證,您可以利用此code sample通過Azure AD實現身份驗證。

    否則,您可以按照Authorization Code Grant Flow建立您的自定義代碼來驗證您的用戶。

    任何進一步的關注,請隨時讓我知道。

    +0

    需要做同樣的事情,但在代碼示例中沒有看到實際驗證用戶登錄Azure AD的任何內容? –

    +0

    @mederomuraliev,請參閱https://stackoverflow.com/questions/33509761/connect-to-azure-active-directory-from-php-web-application –

    相關問題