Назад | Перейти на главную страницу

Обратимое шифрование Active Directory для единого входа?

Проблема: создание и обслуживание сотен учетных записей студентов

Школа, в которой я работаю, использует Active Directory на сервере 2008. Каждый год наши учащиеся должны регистрировать учетные записи в сторонней системе управления школой SaaS. В прошлом для этого потребовалось много работы, так как для учащихся приходилось генерировать коды, а студенты часто теряли коды или не могли понять, как их ввести. Позже студенты, которым удалось зарегистрироваться, могут забыть свои имена пользователей или пароли и приходить ко мне (индивидуальному системному администратору) для сброса пароля и так далее.

Решение 1. Спросите у пользователей их пароли

Этой осенью мы перешли на новую версию SMS, которая, очевидно, не поддерживает какую-либо пакетную регистрацию студентов. Администрация планировала встретиться с каждым студентом, попросить его или ее имя пользователя и пароль и создать для него учетную запись вручную. Я подумал: было бы хорошо, если бы мы могли интегрировать две системы и избежать этого? Однако когда я связался со сторонней компанией, они сказали, что не интегрируются с Active Directory.

Я решил создать свою собственную систему: базу данных в сочетании с программой, которая работает как сценарий входа в систему для учетных записей студентов. Это работает так:

  1. Когда учащиеся впервые входят в Windows, их спрашивают пароли.
  2. Пароли проверяются на соответствие паролям, хранящимся в Active Directory.
  3. Если они совпадают, пароли сохраняются в базе данных (пароли не могут быть просто выгружены из Active Directory в базу данных, поскольку пароли Active Directory доступны только для записи)
  4. Серверный компонент программы создает учетные записи для студентов в сторонней компании, используя пароли Active Directory, хранящиеся в базе данных программы.

Новая проблема

Теперь проблема в том, что если пароли пользователей сбрасываются в Active Directory, они не обновляются в базе данных. Если пользователи меняют свои пароли с рабочих станций, пароли не обновляются в базе данных. Также существует проблема безопасности самой базы данных.

Решение 2: обратимое шифрование

Я заметил, что Active Directory может хранить пароли с обратимым шифрованием. Я знаю, что это официально не задокументировано, и я прекрасно понимаю, что даже написание фразы «восстановление пароля» несет с собой возможность наступления конца света. Но, глядя на риск, я не верю, что наши серверы находятся в большой опасности быть взломанными, и даже если бы это было так, злоумышленник мало что мог бы сделать с учетными записями студентов.

Совет?

Как вы порекомендуете решить эту проблему? Есть ли способ отказаться от базы данных посредника и просто использовать информацию из Active Directory напрямую? Стоит ли отказаться от попыток интеграции систем?

Приветствуются любые мысли, в том числе замечания о том, насколько безрассудной была моя идея единой регистрации.

AD не разработан как инструмент для синхронизации паролей; это каталог. Извлечение из него паролей и их расшифровка (они зашифровываются так же, как и куст SAM, если используется память) не является жизнеспособным производственным решением или поддерживаемым сценарием.

Существует множество решений для управления идентификацией, которые могут подключать изменения пароля, сделанные в AD, с помощью API, аналогичного API вашего сценария входа, и распространять их. Однако сбор этих данных самостоятельно не требует сценариев; вам нужно будет написать DLL политики паролей.

Правильный способ сделать это без взлома - использовать федерацию AD и позволить другому приложению аутентифицировать пользователей в AD вместо собственной внутренней базы данных. Не похоже, что он поддерживает это, но это может быть что-то, что нужно изучить.