Хороший вопрос!
Я подумал об этом... и не могу придумать хорошего решения. Что я могу придумать, так это ужасный ужасный хак, который может сработать. Увидев, что никто не опубликовал ответ на этот вопрос почти день, я подумал, что плохой, но рабочий ответ будет в порядке.
Файл SAM недоступен во время работы системы. Есть некоторые трюки с внедрением DLL, которые вы можете заставить работать, но в конце концов вы просто получите хэши паролей, и вам все равно придется хешировать пароли, предоставленные пользователем, чтобы сопоставить их.
Что вам действительно нужно, так это что-то, что пытается аутентифицировать пользователя по файлу SAM. Я думаю, вы можете сделать это, выполнив что-то вроде следующего.
- Создайте общий файловый ресурс на сервере и сделайте так, чтобы доступ к нему был предоставлен только тем учетным записям, которым вы хотите разрешить вход в систему.
- В PHP используйте системную команду для вызова сценария wsh, который: монтирует общий ресурс, используя имя пользователя и пароль, предоставленные пользователем веб-сайта. записывает, если он работает, а затем размонтирует диск, если он работает.
- Соберите результат как-нибудь. Результат может быть возвращен в php либо через стандартный вывод скрипта, либо, возможно, с использованием кода возврата скрипта.
Я знаю, что это не очень красиво, но это должно сработать.
Я чувствую себя грязным :|
Изменить: причиной вызова внешнего сценария wsh является то, что PHP не позволяет вам использовать пути UNC (насколько я помню).
person
Allain Lalonde
schedule
14.09.2008