Active directory 通过单向信任为Active Directory自定义身份验证提供程序

Active directory 通过单向信任为Active Directory自定义身份验证提供程序,active-directory,windows-authentication,trust,Active Directory,Windows Authentication,Trust,我们正在为托管在DMZ服务器上的网站编写自定义身份验证提供程序。该网站建立在名为Kentico的CMS上,运行在.NET4.0框架上。Kentico托管服务器位于DMZ Active Directory林中。还有另一个内部Active Directory林,DMZ AD与内部AD具有单向信任关系(DMZ信任内部AD,内部AD不信任DMZ) 我们可以毫无问题地对DMZ AD用户进行身份验证。但我们还需要能够对内部广告用户进行身份验证。防火墙设置阻止了对内部AD域控制器的直接访问,因此我们需要通过信

我们正在为托管在DMZ服务器上的网站编写自定义身份验证提供程序。该网站建立在名为Kentico的CMS上,运行在.NET4.0框架上。Kentico托管服务器位于DMZ Active Directory林中。还有另一个内部Active Directory林,DMZ AD与内部AD具有单向信任关系(DMZ信任内部AD,内部AD不信任DMZ)

我们可以毫无问题地对DMZ AD用户进行身份验证。但我们还需要能够对内部广告用户进行身份验证。防火墙设置阻止了对内部AD域控制器的直接访问,因此我们需要通过信任向DMZ AD DC发送身份验证请求

尝试对内部AD用户进行身份验证时,身份验证提供程序向DMZ DC发送的LDAP查询失败,并显示“未找到用户”


想知道以前是否有人处理过这个问题,以及它是如何解决的。提前感谢您的回复。

我发现的一种可靠的方法是使用advapi32.dll库中的LogonUserEx函数对处于单向信任另一端的用户进行身份验证。我确信LOGON32\u LOGON\u交互式登录类型有效,而LOGON32\u LOGON\u批处理无效。LogonUserEx接受域名和用户名作为单独的参数,或者接受带有空域参数的用户名的UPN

现在Kentico有点奇怪,因为他们有两个现成的身份验证提供程序,一个用于对Kentico DB进行身份验证,另一个用于使用System.Web.Security包中的ActiveDirectoryMembershipProvider登录AD。该提供商似乎无法登录单向信任另一端的任何人。现在Kentico不允许您使用自定义提供程序,而是要求通过事件处理程序进行任何自定义身份验证

Kentico文档在如何创建自定义事件处理程序方面有点薄弱。这里有一个链接,指向他们为Kentico 7所做的一切(与Kentico 6大致相同)。关于定制事件处理程序的唯一其他实用信息是针对Kentico 6的,但是对于Kentico 7应该可以很好地工作,可以在这里找到-。从该链接可以看到,目标的事件是SecurityEvents.Authenticate.Execute

希望有帮助