Как использовать зашифрованный пароль в исходном коде для аутентификации службы каталогов
Я написал программу, которая читает UserPrincipal пользователя в нашей Active Directory через PrincipalContext. Для этого необходима аутентификация привилегированного пользователя. На данный момент пароль для этой аутентификации сохраняется в виде открытого текста в исходном коде. Из соображений безопасности зашифрованный пароль следует сохранить в исходном коде или в другом файле. Есть ли способ решить это?
const string domain = "";
const string rooOrganizationalUnit = "";
const string adDomain = "";
const string adUserName = "";
const string adPassword = "";
private static PrincipalContext GetPrincipalContext()
{
PrincipalContext principalContext;
principalContext = new PrincipalContext(ContextType.Domain, domain, rooOrganizationalUnit, ContextOptions.Negotiate, adUserName + "@" + adDomain, adPassword);
return principalContext;
}
(Этот фрагмент кода изначально взят с этого сайта)
1 ответ
Решение
Вы не хотите хранить это в коде, зашифрованном или нет. Один из подходов заключается в том, чтобы перенести конфиденциальные данные в файл конфигурации, ввести пароли только в рабочей среде и зашифровать этот раздел в приложении.
В конфигурационном файле
<configuration>
<appSettings>
<add key="adPassword" value="this should be empty in source controll" />
</appSettings>
</configuration>
В коде
const string adPassword = ConfigurationManager.AppSettings["adPassword"];
Заметки
- Вы хотели бы зашифровать раздел файла конфигурации, что-то вроде этого обычно работает
- Если вам все равно нужно зафиксировать файл конфигурации, используйте преобразование файла конфигурации и зафиксируйте файл в качестве шаблона. Пароль никогда не будет передан в систему контроля версий