这是完全可行的。但是我想指出,在将服务器绑定到 Active Directory 时,您正在检查提供的用户名(通常是 sAMAccountName)和在一个操作中输入的密码。在 C# 中有几种方法可以做到这一点,但很多人(包括我自己)选择使用System.DirectoryServices
andSystem.DirectoryServices.Protocols
命名空间。
这就是我当前将用户绑定到 Active Directory 的方式,然后根据此方法的结果,我要么显示授权失败的原因,要么允许他们继续使用他们在应用程序中的帐户。
//Define your connection
LdapConnection ldapConnection = new LdapConnection("123.456.789.10:389");
try
{
//Authenticate the username and password
using (ldapConnection)
{
//Pass in the network creds, and the domain.
var networkCredential = new NetworkCredential(Username, Password, Domain);
//Since we're using unsecured port 389, set to false. If using port 636 over SSL, set this to true.
ldapConnection.SessionOptions.SecureSocketLayer = false;
ldapConnection.SessionOptions.VerifyServerCertificate += delegate { return true; };
//To force NTLM\Kerberos use AuthType.Negotiate, for non-TLS and unsecured, use AuthType.Basic
ldapConnection.AuthType = AuthType.Basic;
ldapConnection.Bind(networkCredential);
}
catch (LdapException ldapException)
{
//Authentication failed, exception will dictate why
}
}
如果您还想更进一步并检索有关此用户的属性,请在此处查看此线程。
另外,我强烈推荐 Softerra 的 LDAP 浏览器来测试任何与 LDAP 相关的东西——它是一个很棒的产品,而且它是免费的。你可以从这里下载。
希望这能让你朝着正确的方向前进。