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