如何在目录服务身份验证的源代码中使用加密密码
How to use encrypted password in source code for Directory Services authentication
我编写了一个程序,通过 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;
}
(此段代码原取自此site)
您不想将其存储在加密或未加密的代码中。其中一种方法是将敏感数据转移到配置文件中,仅在生产中键入密码并在应用程序中加密该部分。
在配置文件中
<configuration>
<appSettings>
<add key="adPassword" value="this should be empty in source controll" />
</appSettings>
</configuration>
在代码中
const string adPassword = ConfigurationManager.AppSettings["adPassword"];
备注
- 你想要加密配置文件部分,像 this 这样的东西通常有效
- 如果无论如何都需要提交配置文件,请使用配置文件转换,并将文件作为模板提交。密码永远不会提交给源代码管理
我编写了一个程序,通过 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;
}
(此段代码原取自此site)
您不想将其存储在加密或未加密的代码中。其中一种方法是将敏感数据转移到配置文件中,仅在生产中键入密码并在应用程序中加密该部分。
在配置文件中
<configuration>
<appSettings>
<add key="adPassword" value="this should be empty in source controll" />
</appSettings>
</configuration>
在代码中
const string adPassword = ConfigurationManager.AppSettings["adPassword"];
备注
- 你想要加密配置文件部分,像 this 这样的东西通常有效
- 如果无论如何都需要提交配置文件,请使用配置文件转换,并将文件作为模板提交。密码永远不会提交给源代码管理