Как использовать зашифрованный пароль в исходном коде для аутентификации службы каталогов

Я написал программу, которая читает 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"];

Заметки

  • Вы хотели бы зашифровать раздел файла конфигурации, что-то вроде этого обычно работает
  • Если вам все равно нужно зафиксировать файл конфигурации, используйте преобразование файла конфигурации и зафиксируйте файл в качестве шаблона. Пароль никогда не будет передан в систему контроля версий
Другие вопросы по тегам