C# ASP.NET/IIS 7-使用主体对Active Directory进行身份验证

C# ASP.NET/IIS 7-使用主体对Active Directory进行身份验证,c#,asp.net,iis-7,active-directory,principal,C#,Asp.net,Iis 7,Active Directory,Principal,我当前的应用程序使用该类根据LDAP(更准确地说是Active Directory)对默认用户(填写在Web.config专用部分)进行身份验证: 然后,此身份验证允许搜索任何其他用户(通过UserPrincipal.FindByIdentity(ldapContext,username))。但是我必须改变这一点,因为我的客户不接受在Web.config中清除用户。好的,我能理解:-) 因此,我有几种解决方案: 设法加密Web.config的相应部分(使用提供者等加密成员资格部分) 使用部署应

我当前的应用程序使用该类根据LDAP(更准确地说是Active Directory)对默认用户(填写在Web.config专用部分)进行身份验证:

然后,此身份验证允许搜索任何其他用户(通过
UserPrincipal.FindByIdentity(ldapContext,username)
)。但是我必须改变这一点,因为我的客户不接受在Web.config中清除用户。好的,我能理解:-)

因此,我有几种解决方案:

  • 设法加密Web.config的相应部分(使用
    提供者
    等加密
    成员资格
    部分)

  • 使用部署应用程序的IIS 7的应用程序池中的帐户。这意味着要从IIS中检索主体(我想这一点应该不那么难),然后使用它对AD进行身份验证;但是我找不到任何方法,也不是通过
    PrincipalContext
    类,也不是通过one

您是否知道如何管理这两种解决方案中的任何一种,或者您是否想到其他解决方案


非常感谢

我想你的问题不是用户名,而是密码?据我所知,第二个解决方案需要工作。我不知道该怎么做

对于第一个解决方案,您可以加密用户名和密码,并将加密值存储在字符串中。加载后,您需要解密字符串。但是,您的解决方案将不安全


您还应该考虑,如果需要高安全性实现,那么可以将加密密钥存储在安全存储中。然后你就可以反汇编了。

事实上,问题是密码:我想没有办法从主体那里获得密码(基本安全性)。好的,我来看看加密。好的,谢谢!加密的一个好方法是通过IIS工具,该工具在中有详细描述。
ldapContext = new PrincipalContext(AdContextType, AdHost, AdContainer, 
                                   ContextOptions.SimpleBind,
                                   AdDefaultUser, AdDefaultPassword)