以下网页讨论了在代码中使用模拟(ASP.NET):http://support.microsoft.com/kb/306158。我正在考虑为代码创建一个类,然后应用程序可以调用impersonateValidUser和undoimpersonation。
我担心将用户名和密码放在我的代码中,因为任何人都可以使用像ILDASM这样的工具来查看它们。隐藏这些密码的最佳方法是什么?
该文章的标题为:模拟IIS经过身份验证的帐户或用户。我考虑过在Web.Config中创建一个模拟用户,但这意味着整个应用程序作为inpersonated用户运行。我只希望应用程序的一小部分作为模拟用户运行 - 当需要访问和更新活动目录时。
答案 0 :(得分:1)
我真的希望您只有应用程序的一部分才能在高权限帐户下运行AD更新。我还要分享您关于将密码存储在web.config或代码中的问题。
我可以为你考虑两种选择。
将帐户详细信息存储在web.config和encrypt部分web.config中。这将确保只有Web服务器的管理员才能获取密码。其他人抓住web.config将无法理解密码。
使用AD更新代码创建一个小的,单独的WCF服务。然后在单独的应用程序池中运行该WCF服务,并将应用程序池设置为有权访问活动目录的用户的标识。为WCF设置受限制的仅本地主机端点。 WCF服务应具有访问控制权限,仅允许从专用帐户进行访问。该帐户应设置为主网站的应用程序池的标识。
选项1更容易实现,并且可以很好地保护密码。选项2为密码提供了更好的保护,因为它们根本没有存储在web.config中 - 它们是IIS配置的一部分。选项2还在特权代码与系统其余部分之间添加完全隔离,因为它在单独的进程中运行AD更新代码。通过这种隔离,可以更容易地对AD代码进行代码审查以检查安全问题。