Нарисовалась интересная задачка – авторизовывать пользователя через AD.
Собственно задачка для меня не нова – в нескольких сервисах я её уже реализовал – через LDAP, на одном, доступ к которому есть из “внешнего мира”, – через mod_auth_pam (winbindd на сервере установлен, настроен и работает как часы “Слава”) – т.е. как бы задачка – казалось бы вовсе не задачка…. Но! Но хочется людЯм чтоб “не выскакивало это окошечко”… Обратили внимание на SharePoint сервер, который (якобы) не спрашивает логин-пароль – объясняю – на самом деле спрашивает, просто этого не видно – говорят – ну и сделай так же – ну и делаю так же… НО! но “без проблем” это делать умеет только IE (Mozilla “в принципе” тоже умеет), а как же Ёпера, она же, убогая, не умеет ВАЩЕ NTLM ?
Забить на Оперу Допустим что Оперой не пользуются… а в принципе.. безопастна ли NTLM-авторизация? посмотрел на PHP NTLM GET LOGIN… судя по реализации можно смело предположить, что потенциальный негодяй может “завернуть” в base64_encode любой логин… (аналогичная история получится с mod_ntlm – первые версии своих “сервисов” делал через него, но после перестановки системы на сервере, он начал “конфликтовать” с разными модулями апача и мне надоело его править)…
Пока оставляю всё как есть – “клиент: форма -> клиент: des_encrypt ->сервер: ldap_connect->сервер: ldap_bind-> сервер: return (true || false) ”
В такой схеме (на мой взгляд) безопасно передаются данные и безопасно(а главное “честно”) проверяется пара логин-пароль согласно всем политикам AD – всякие блокировки по времени, expires и т.д. тогда как при NTLM можно с лёгкостью обойти все эти механизмы
А собственно вопрос – а верно ли я понял, что NTLM – “АЦтой” ? А есть ли способ использовать NTLM прозрачно для клиента и безопасно для сервера?