У меня есть сервер Active Directory, работающий на Windows Server 2012 R2. У меня также есть веб-сервер, работающий на macOS El Capitan. Существует внешний AD-сервер, который я могу использовать (только) для запроса пользователя (он уже работает).
Я бы хотел, чтобы новые пользователи, существующие на внешнем AD-сервере, могли зарегистрироваться. Они должны пройти аутентификацию на внешнем AD-сервере, и, если они существуют, для них должна быть создана учетная запись на моем AD-сервере 2012 года. Они также добавят некоторую информацию при регистрации (адрес электронной почты, ...). Весь процесс должен выполняться через веб-сайт, который должен работать на веб-сервере macOS.
Я наткнулся на то, как создать новую учетную запись на сервере AD с веб-сервера macOS. Я рассмотрел несколько возможностей, все из которых либо имеют большой недостаток, либо я недостаточно знаю о реализации:
Мой вопрос: каков простой и безопасный метод удаленного добавления пользователей в Active Directory с сервера, отличного от Windows?
Новый улучшенный ответ!
Вот как бы я это сделал:
Существует порт openssh для Windows, и openssh позволяет вам указать команду, которая будет связана с ключом в файле authorized_keys. Читать этот и посмотрите раздел для authorized_keys file format
и конкретно command="command"
Напишите сценарий создания учетной записи и добавьте его в качестве "command"
. Обратите внимание на немного о "OPENSSH_ORIGINAL_COMMAND"
Самый важный момент, о котором следует помнить, это то, что Интернет попытается взломать эту вещь, поэтому убедитесь, что вы дезинфицируете, стерилизуете и, возможно, усыпляете входящие данные. Помните, что ваша проблема с ключом ssh без пароля заключается в том, что кто-то украдет ключ. Итак, когда вы пишете сценарий, предполагайте, что у каждого злоумышленника уже есть ключ. Эта же проблема касается независимо от используемой вами технологии (php, мыло, шампунь и т. Д.)
Надеюсь, это поможет!
Старый бесполезный ответ!
Я думаю, это можно сделать через LDAP. Я нашел ресурс C #, который включает создание пользователей, и делает это через LDAP. Теоретически вы можете сделать то же самое с openldap (ldapsearch и т. Д.) Или библиотекой LDAP на любом языке программирования по вашему выбору.
https://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C#34
Однако статье 10 лет, поэтому она может не сработать.
В настоящее время я использую LDAP в качестве интерфейса только для чтения к удаленному серверу AD, поэтому, по крайней мере, я знаю, что LDAP по-прежнему важен.
Надеюсь, это поможет! -Дилан