所以我在SSIS包中有一个访问电子邮件的脚本任务。
ExchangeService service = new Microsoft.Exchange.WebServices.Data.ExchangeService(ExchangeVersion.Exchange2010_SP1);
service.Credentials = new NetworkCredential("email@domain.com", "123");
我已经加密了软件包本身,但仍然感到不安,因为它是在ScriptMain.cs页面上的纯文本。在过去,我能够在WPF应用程序上加密这些数据,但不确定如何将其转换为脚本任务。我在想这个吗?有没有办法在连接管理器或其他可以增加一层保护的东西中设置它?
我想添加我正在使用Exchange服务API连接到电子邮件。
答案 0 :(得分:1)
您可以使用所谓的敏感包或项目参数;映射到此类参数的环境参数存储在SSIS目录中加密。只需为您的密码创建一个密码,然后使用.GetSensitiveValue()
方法(例如
Dts.Variables["$Package::YourPassword"].GetSensitiveValue().ToString()
如Matt Masson所述。
答案 1 :(得分:0)
根据EWS Managed API clients,针对内部部署Exchange服务器的加入域的客户端可以使用登录用户的默认凭据,假设凭据与邮箱相关联
所以你可以使用;
service.UseDefaultCredentials = true;
如果无法做到这一点,我建议将其存储在要检索的数据库中。您将能够在数据库中保护/加密它。
此外,如果您使用的是SQL 2012或更高版本,则可以使用敏感参数。这是假设您要参数化密码和/或用户名。
public void Main()
{
try
{
string value = Dts.Variables["$Package::ExchangePassword"].GetSensitiveValue().ToString();
Dts.TaskResult = (int)ScriptResults.Success;
}
catch (Exception e)
{
Dts.Log(e.Message, 0, null);
Dts.TaskResult = (int)ScriptResults.Failure;
}
}