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

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

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

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

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

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

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

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

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

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

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

Совет?

How would you recommend I solve this problem? Is there a way I can drop my middleman database and simply use information from Active Directory directly? Should I abandon trying to integrate the systems?

Any thoughts are welcome, including remarks on how harebrained my idea for single sign-on was in the first place.

1 ответ

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

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

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

Другие вопросы по тегам