@thekip
Php/C#/Js Developer

NTLM Авторизация БЕЗ ввода пароля в PHP?

Необходимо для корпоративного портала сделать бесшовную авторизацию. Что бы при входе в портал, автоматически происходила передача логина юзера (AD учетка).


Как я понял такую задачу можно реализовать с помощью NTML авторизации. И в нашей корпоративной сети таким образом настроен шлюз (Squid).


Однако как я не пытался повторить схему, путного ничего не вышло.


В коде я отправляю заголовки:

protected function sendAuthHeaders() {
        header('HTTP/1.0 401 Unauthorized');   // требуем от клиента авторизации
        header('WWW-Authenticate: NTLM');      // тип требуемой авторизации - NTLM
        Yii::app()->end();                                 // завершаем выполнение скрипта
    }

    public function ntlmAuth() {
        if (!$this->issetNtlmHeaders()) {
            $this->sendAuthHeaders();
        }
        
        //разбор ответа от браузера
    }



Как только сервер получает заголовок HTTP/1.0 401 Unauthorized, он выдает окно авторизации. А мне необходимо что бы авторизация происходила прозрачно, без запроса логина-пароля.


Портал крутится под Апач, и для него я видел несколько модулей, но как я понял они реализовывают сразу весь цикл авторизации (подключаются к AD и авторизовывают юзера там). Мне же необходимо просто получить в php скрипте имя текущего юзера, все остальное я сделаю сам.
  • Вопрос задан
  • 17680 просмотров
Пригласить эксперта
Ответы на вопрос 3
@cat_crash
Насколько мне известно этот механизм (когда первый раз возвращается 401 и в ответ браузер сам кидает информацию о пользователе) реализован только в IE. Более того он будет это делать только если сайт в доверенной зоне.
Ответ написан
@mayorovp
Не используйте NTLM авторизацию в AD — это рушит всю идею домена.
Ответ написан
@plaha
Смотреть mod_auth_sspi ( переменная $_SERVER['REMOTE_USER'] )
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы