Является ли LDAP единственным способом аутентификации веб-приложения в Active Directory?

Как я могу подключить веб-приложение PHP к Active Directory? Является ли LDAP единственным способом?

Некоторые ссылки, которые я имею до сих пор https://stackoverflow.com/questions/1003751/how-do-i-use-microsoft-ad-and-php-single-sign-on-web-app

5 ответов

Ну, Active Directory - это LDAP+Kerberos+ несколько других разных частей. Официально вы можете проходить аутентификацию через Kerberos, но это не даст никаких других данных авторизации, которые вам могут понадобиться.

Пока ваш брандмауэр не запрещает это и у вас есть учетная запись пользователя с правильными разрешениями, вы должны иметь возможность запрашивать Active Directory, используя стандартные библиотеки LDAP PHP, браузеры LDAP и т. Д.

LDAP не требуется. Вы можете использовать аутентификацию на основе утверждений (новый тренд) с SAML. Библиотека PHP здесь.

Попросите администратора сети установить ADFSv2, чтобы AD открывал SAML и конечную точку WS-Trust в вашем приложении. ADFS является бесплатной, а Windows 2008 R2 - подходящая ОС для запуска последней версии.

СОВЕТ: Просто убедитесь, что вы установили его, чтобы он использовал SQL (не SQL Express), если вам нужны расширенные функции, такие как обнаружение воспроизведения токенов.

Вы также можете попробовать SAML. Попробуйте выполнить поиск по "SAML Active Directory", а также "SAML apache".

В настоящее время я работаю над гибридным приложением для моей компании, которое требует аутентификации сотрудников через LDAP / ActiveDirectory.

в PHP не так сложно авторизоваться против LDAP.

В вашей конфигурации PHP должны быть включены сеанс и ldap.

Вот пример базовой аутентификации с PHP

class LDAP_Authentication
{
    private $connection;
    public function __construct($domain)
    {
        $this->connection = @ldap_connect($domain);
    }

    public connected()
    {
        return $this->connection !== false;
    }

    public function login($user,$password)
    {
        return @ldap_bind($this->connection,$user,$password);
    }
}

Пример использования:

session_start(); //Single Login

$LDAPAuth = new LDAP_Authentication('domain.internal');

if($LDAPAuth->connected())
{
    if($LDAPAuth->login('some_user',"some_pass"))
    {
        $_SESSION['logged_in'] = true;
        $_SESSION['credentials'] = array('some_user','some_pass');

        echo 'Welcome';
    }else
    {
        echo 'Try again';
    }
}

Обновление 1

Возможный метод заключается в использовании JavaScript для достижения этой цели: вы можете определить имя компьютера клиента, имя пользователя, домен с помощью сетевого объекта в WScript, затем определить учетные данные и затем отправить их на сервер для проверки с помощью AD, если все Затем сервер создаст для этого пользователя сеанс и ответит с помощью объекта JSON, для которого установлено значение true.

сторона javascript увидит, что это успешно, а затем перенаправит браузер в другое место, заставив их войти в систему.

POC:

var Data = {}
//Show loading layer
$("#loader").show();
try
{
    var Information = new ActiveXObject("WScript.Network");
    Data.Username = Information.UserName;
    Data.Computername = Information.ComputerName;
    Data.Domain = Information.UserDomain;

    $.post("/ldap/ajax/login",Data,fucntion(object){
        if(object.success)
        {
            document.location = "/"; //Will automatically start session.
        }else
        {
            document.location = "/ldap/faild/"; //general login page
        }
    });
}catch(e)
{
    document.location = "/ldap/faild/"; //general login page
}

Это правильно? Как я могу подключиться без LDAP?

Если ваша система Linux работает под управлением Winbind ( http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/winbind.html), вы можете использовать стандартные службы PAM для аутентификации. И, как уже указывалось, вы также можете аутентифицироваться с использованием Kerberos (либо рассматривая его как базу паролей, либо фактически принимая токены Kerberos через, например, Apache mod_kerberos).

Использование Kerberos дает вам некоторые преимущества безопасности, если все сделано правильно (потому что пароли пользователей никогда не пересекают сеть), но вам все равно нужно взаимодействовать с LDAP (или локальной системой, на которой запущен Winbind), чтобы получить членство в группах и т. Д., Для авторизации.

Другие вопросы по тегам