C# 如何通过Kerberos委托进行LDAP查询
客户同时拥有内部域和DMZ域。此时,两个域之间没有信任关系。我们在DMZ区域部署了web应用程序,因为该应用程序也与外部用户进行了一些交互C# 如何通过Kerberos委托进行LDAP查询,c#,ldap,kerberos,kerberos-delegation,C#,Ldap,Kerberos,Kerberos Delegation,客户同时拥有内部域和DMZ域。此时,两个域之间没有信任关系。我们在DMZ区域部署了web应用程序,因为该应用程序也与外部用户进行了一些交互 来自内部域的内部用户需要能够通过Kerberos身份验证登录到我们的web应用程序,考虑到web应用程序的应用程序池需要能够解密来自内部用户的服务票证,而应用程序池帐户来自DMZ域,这是否可能 假设#1是可能的,在内部用户登录之后,我们需要对其他内部用户和组上的人员选择器执行LDAP查询。在这里,我们希望通过Kerbeos委托对内部域进行LDAP查询。只是想
public DirectoryEntry(字符串路径、字符串用户名、字符串密码、System.DirectoryServices.AuthenticationTypes authenticationType)代码>
我们可以提供一个authenticationType作为委托,尽管我仍然需要提供用户名和密码,但我没有
场景1是可能的,但您必须通过直接调用SSPI手动编码以接受票据 场景2在理论上可以与无约束的委托(也许)一起工作,但这是难以置信的不安全 <>您应该认真考虑创建单向信任并启用基于资源的受限委托。然后使用只包含路径的构造函数重载
publicdirectoryentry(字符串路径);
它将推断当前用户并在幕后尝试模拟。场景1是可能的,但您必须手动编写代码,通过直接调用SSPI来接受票据。场景2在理论上可以与无约束的委托(也许)一起工作,但这是难以置信的不安全。您应该认真考虑只创建单向信任并启用基于资源的受限委托。谢谢@史提夫。如果可以创建一个基于资源的受约束的委托,我们只想知道如何使用DirectoryEntry在代码级别这样做。我在这里没有找到指定正确客户端用户令牌的方法。您可以使用只包含路径的构造函数重载。它将推断当前用户并尝试在幕后模拟。明白了,谢谢@Steve顺便说一句@Steve,只是想知道您是否想将您的评论转换为答案以结束此问题。如果没有,我可以根据你的建议在这里写下答案。我无法就答案给出可靠的例子,因为我们可能不会这样做,而且很可能不会。再次感谢。