使用ActiveDirectoryMembershipProvider进行Windows身份验证

时间:2012-09-13 15:52:00

标签: asp.net iis ldap windows-authentication

我的网站身份验证存在问题。

我正在建立一个网站,需要使用相同的单点登录作为内部网站点。

我的想法是在网站上使用Windows身份验证来获取用户凭据,然后使用LDAP对我们客户端的域控制器进行身份验证。 有问题的网站托管在客户域外的服务器上。 我尝试使用 ActiveDirectoryMembershipProvider ,但我无法使用集成身份验证。

我的问题是我无法通过Windows身份验证将LDAP用作成员资格提供程序。目前,Windows身份验证获取用户凭据,尝试针对计算机上的用户对其进行身份验证,并因Web服务器不在域上而失败。我想获取凭据并使用LDAP将它们发送到将对其进行身份验证的域控制器。

有没有办法可以使用LDAP连接进行集成身份验证进行身份验证?

1 个答案:

答案 0 :(得分:1)

<强>更新

如果您的网站在客户端域外的服务器上托管,则您无法获得用户身份验证。

因为当您将凭据发送到托管服务器时,域服务器中有一个位置对象,它将尝试首先在本地找到指定的用户托管了您的网站,然后托管到位置指定的 Doamin服务器(虽然我们也可以设置优先级)

如果在本地没有找到任何用户,那么

之后,它会使用凭据域名服务器发送请求。

在您的情况下,首先,它不会在您希望与之通信的位置对象中找到域名服务器名称

例如:

 PrincipalContext pr = new PrincipalContext(ContextType.Domain, "corp.local", "dc=corp,dc=local", username, password);

此处 Corp.Local 是该用户的位置对象用户名和密码中具有管理权限的域名编辑/更新/删除域服务器中的任何用户。

所以整个过程再次进行,当在Location对象中找到指定的 Domain Server 时,它将与进行通信并生成 TOKEN

您的案例的唯一解决方案是您需要将所有用户从客户端服务器复制到域服务器,否则您需要在两个域服务器之间建立信任。

希望这就是你要找的东西。!!