1

我编写了一个程序,通过 PrincipalContext 读取 Active Directory 中用户的 UserPrincipal。为此,需要对特权用户进行身份验证。目前,此身份验证的密码以明文形式保存在源代码中。出于安全原因,应将加密密码保存在源代码或其他文件中。有没有办法解决这个问题?

    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;
    }

(这段代码最初来自这个网站

4

1 回答 1

1

您不想将其存储在加密或未加密的代码中。其中一种方法是将敏感数据转移到配置文件中,仅在生产环境中输入密码并在应用程序中加密该部分。

在配置文件中

<configuration>
    <appSettings>
        <add key="adPassword" value="this should be empty in source controll" />
    </appSettings>
</configuration>

在代码中

const string adPassword = ConfigurationManager.AppSettings["adPassword"];

笔记

  • 你想加密配置文件部分,这样的东西通常有效
  • 如果您仍然需要提交配置文件,请使用配置文件转换,并将提交文件作为模板。密码永远不会被提交到源代码控制
于 2015-11-24T15:17:23.940 回答