Назад | Перейти на главную страницу

Является ли 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

Что ж, 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), если вам нужны расширенные функции, такие как обнаружение воспроизведения токена.

Я сейчас работаю над гибридным приложением для моей компании, которое требует аутентификации сотрудников через 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
}

Вы также можете попробовать SAML. Попробуйте выполнить поиск по запросу «активный каталог SAML» или «SAML apache».

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

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

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