【发布时间】:2014-06-16 10:39:48
【问题描述】:
一些背景:
我有一个解决方案,包括:
- IIS 应用程序 (ASP.NET)
- Windows 服务
IIS 应用程序和 Windows 服务都在同一个域帐户下运行。它们还连接到同一个数据库。
数据库访问凭据存储在一个通用配置文件中,并使用 aspnet_regiis.exe 工具进行加密。 ACL 权限授予对域帐户的密钥容器的读取权限。
Web 应用程序可以访问密钥容器并解密连接字符串。
另一方面,该服务无法访问 RSA 密钥容器。我得到错误:
尝试连接数据库时出现意外错误;例外: System.Configuration.ConfigurationErrorsException:解密失败 使用提供者“RsaProtectedConfigurationProvider”。错误信息来自 提供者:无法打开 RSA 密钥容器。 (C:\ApplicationDir\ConnectionSettings.config 第 2 行)---> System.Configuration.ConfigurationErrorsException:RSA 密钥 无法打开容器。
解决方法:
- 将域帐户添加到管理员组(哎呀!)
- 将域帐户添加到 IIS_IUSRS 组
- 更改所有人组的权限条目。默认情况下,读取权限仅应用于此文件夹。将此值更改为 此文件夹、子文件夹和文件 似乎可行。
- 在 MachineKeys 文件夹中为域帐户添加权限条目
我倾向于选项 2,但这里到底发生了什么?
为什么应用程序池可以在所述域帐户下运行,而不是在同一域帐户下运行的Windows服务?
在某些情况下,域帐户是否不被视为所有人组的一部分?
处理这种情况的最佳做法是什么?
谢谢, 凯文
【问题讨论】:
标签: asp.net encryption windows-services windowsdomainaccount rsaprotectedconfiguration