ASP.NET / IIS 7 - 使用Principal对Active Directory进行身份验证

3

目前我的应用程序使用PrincipalContext类来对LDAP进行身份验证,更具体地说是对Active Directory进行身份验证,其中默认用户填写在 Web.config 的专用部分中:

ldapContext = new PrincipalContext(AdContextType, AdHost, AdContainer, 
                                   ContextOptions.SimpleBind,
                                   AdDefaultUser, AdDefaultPassword)

这种身份验证允许通过 UserPrincipal.FindByIdentity(ldapContext, username) 查找任何其他用户。但我必须更改此内容,因为在 Web.config 中明文存储用户信息是不可接受的。好的,我理解 :-)
所以我有几个解决方案:
  • 加密Web.config中相应部分(包括membershipproviders等)

  • 使用部署应用程序的IIS 7的应用程序池帐户。这意味着需要从IIS检索Principal(我想这一点不会太难),然后将其用于对AD进行身份验证;但我找不到任何方法,无论是通过PrincipalContext类还是通过ActiveDirectoryMembershipProvider

您知道如何管理这两个解决方案中的任何一个吗?或者您是否考虑过其他方案?
非常感谢!
1个回答

2
我认为不是用户名的问题,更可能是密码的问题。据我所知,第二种解决方案无法实现。没有任何方法可以做到这一点。
对于第一种解决方案,你可以加密用户名和密码,并将加密后的值存储在一个字符串中。加载后,你需要解密这些字符串。但是你的解决方案并不能抵御反汇编攻击。
如果你需要高度安全性的实现,你还应该考虑将加密密钥存储在安全存储区域。这样你就会更加安全,不容易被反汇编攻击。

的确,问题在于密码:我猜没有办法从主体(基本安全)中获取密码。好的,我会看看加密方案。 - Emmanuel
好的,谢谢!一种很好的加密方式是通过IIS工具实现的,该工具在这个Stack Overflow主题中有详细描述。 - Emmanuel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接