В настоящее время мы храним пользователей нашего веб-приложения в нашей базе данных вместе с хэшами/солями их паролей. Хэши рассчитываются, когда пользователь создан, и устанавливает свой пароль и сохраняется в таблице пользователя в базе данных.
Через некоторое время после создания учетной записи пользователя мы можем создать учетную запись Windows в нашем домене и хотим иметь возможность устанавливать пароль пользователя домена, чтобы он был таким же, как тот, который пользователь использует для входа в систему веб-приложение. Поскольку мы не сохраняем текстовую версию пароля, у нас нет способа отправить ее AD, когда мы ее создали.
Один из способов, которым я думал обойти эту проблему, - это рассчитать все разные хэши паролей, которые AD использует, когда пользователь сначала устанавливает свой пароль, а затем каким-то образом устанавливает записи в AD позже, когда мы создаем пользователя.
- Как бы вы создали хэши (я думаю, что они MD4, MD5 и DES), используя .Net?
- Можете ли вы обойти создание пароля на UserPrincpal.SetPassword и сделать другой вызов, чтобы напрямую установить хеши, хранящиеся в AD?
Кажется, должен быть способ сделать это, поскольку у MS есть инструменты для синхронизации паролей от AD до пользователей Azure.