问题描述
对于到远程服务器Active Directory的LDAP连接,我非常陌生。我的系统管理员仅向我提供了两件事。 “ DC = intechww,DC = com”,我具有网络管理员的用户名和密码,到目前为止,我已经尝试了许多组合,但是没有从网络上得到我的答复。
如果用户位于Active Directory中,则我需要验证用户凭据,然后获取其用户名和其他详细信息并存储在我的ASP.NET MVC应用数据库中。
我的LDAP连接字符串是:
<connectionStrings>
<add name="ADConnectionString"
connectionString="LDAP://intechww.com/DC=users,DC=com" />
</connectionStrings>
其他Web.config详细信息是
<system.web>
<authentication mode="Forms">
<forms name=".ADAuthCookie" loginUrl="~/User/Verify" timeout="15" slidingExpiration="false" protection="All" />
</authentication>
<membership defaultProvider="MY_ADMembershipProvider">
<providers>
<clear />
<add name="MY_ADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider"
connectionStringName="ADConnectionString"
attributeMapUsername="sAMAccountName"
connectionUsername="ServiceAccount"
connectionPassword="********* " />
</providers>
</membership>
</system.web>
我的C#控制器方法是:
[HttpPost]
public ActionResult Verify(User model)
{
if (Membership.ValidateUser(model.username,model.password))
{
FormsAuthentication.SetAuthCookie(model.username,true);
}
else
{
ModelState.AddModelError("","The user name or password provided is incorrect");
}
return View();
}
解决方法
DC=
部分是构成您的LDAP名称的域组件。
因此,鉴于收到的输入,我将尝试以下连接字符串:
LDAP://intechww.com/DC=intechww,DC=com
这将连接到域的根。
或者:
LDAP://intechww.com/CN=Users,DC=intechww,DC=com
这将连接到域的默认Users
容器。
请查看Sysinternal AD Explorer-一种非常有用的工具,它可以窥视广告中的内容并了解其中的各个点(以及LDAP URL如何对其进行寻址)。