Если кому этого достаточно для понимания что делать и как настраивать, то замечательно, а остальным предлагается читать далее.
Функциональность эта нужна главным образом в локальных сетях и мне сложно представить, зачем это надо, если сайт открыт для общего доступа в интернете. Хотя кое-какая мысль у меня по этому поводу возникла, расскажу ниже.
Итак, для того, чтобы все это заработало, нужен Windows-домен. И если таковой есть и пользователь заведен и авторизован в домене, а БУС правильно настроен, то пользователь может зайти на сайт не вводя логина и пароля.
В нашем случае авторизацию пользователя проверяет веб-сервер IIS или Apache, и если пользователь не авторизован, до БУС дела даже не доходит, а если авторизован, то в БУС (а, вернее, в php) передается имя авторизованного пользователя. БУС должен проверить существование этого пользователя на AD/LDAP-сервере и коли отыщет - авторизовать и назначить права в соответствии с настройками AD/LDAP-сервера.
Итак, первое что нужно настроить в БУС это AD/LDAP-сервер и не забудьте указать "Мнемонический код (префикс при авторизации)". Сделайте его таким же, как и название домена (здесь и далее я имею ввиду windows-домен)
Это поле очень полезно, даже когда у вас нет домена, но есть несколько LDAP-серверов. Поскольку на разных LDAP-серверах могут быть пользователи с одинаковым именем, то не понятно, на каком из серверов юзер будет авторизован. А если указать office\vasya то все вопросы сразу отпадают.
Теперь о настройке веб-серверов. В IIS все просто, а вот с апачами придется повозиться.
Как настроить apache под windows опиано по этой ссылке:
А если у вас apache под UNIX, то вам сюда:
Итак, веб-сервер настроен и работает, осталось донастроить БУС и наслаждаться. Идем в настройки модуля "AD/LDAP интеграция", взводим галочку "Использовать NTLM авторизацию" и возможно после этого все заработает
Теперь еще несколько моментов. Обычно имя авторизованного пользователя содержится в $_SERVER['REMOTE_USER']. Если у вас это не так, ключ в массиве $_SERVER можно изменить.
Обычно имя пользователя передается в виде имя_сервера\имя_пользователя, то есть например office\vasya. Если у вас и это не так, то в настройках модуля можно указать AD/LDAP-сервер по умолчанию, на котором проверять авторизацию.
Всякого разного рода ньюансов у этой схемы может быть много и не все можно заранее проверить. Поэтому, если у вас что-то отличается от описанной схемы или работает не так, то не стесняйтесь, пишите. Будем разбираться.
И еще: по мне так все это скорее должно называться windows-авторизация, а не ntlm, просто так эта функциональность называлась у нас в процессе разработки. Если есть идеи, как это назвать лучше - пишите свои идеи
P.S. Обещанная кое-какая мысль про общий доступ в интернет. На сайте можно создать папку и настроить сервер таким образом, что NTLM-авторизацию он будет проверять только для этой папки. То есть, если туда зайдет авторизованный пользователь из вашего домена - он будет авторизован автоматически на сайте без ввода логина и пароля.