最近有个项目点需要实现域登录系统功能,即用户使用域用户和域验证密码即可通过业务系统的密码验证,登录系统。
什么是域?
域是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后两个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理,以及相互通信和数据传输。
实现域验证还需要一个域控制器
域控制器就是一台服务器,负责每一台联入网络的电脑和用户的验证工作。
一般企业的电脑都会要求员工的电脑入域,方便公司的资源调配和共享。
.net framework 为域登录提供了System.DirectoryServices DLL程序集,程序集具体接口可参照官方API,这里就不赘述了。
下面是实现域登录的代码:
/// <summary>
/// 连接域控制器
/// </summary>
/// <param name="LADPath">ldap的地址,例如"LDAP://***.***.48.110:389/dc=***,dc=com"</param>
/// <param name="authUserName">连接用户名,例如"cn=root,dc=***,dc=com"</param>
/// <param name="authPWD">连接密码</param>
public bool OpenConnection(string LADPath, string authUserName, string authPWD)
{
//创建一个连接
_objDirectoryEntry = new DirectoryEntry(LADPath, authUserName, authPWD, AuthenticationTypes.None);
if (_objDirectoryEntry.Properties != null && _objDirectoryEntry.Properties.Count > 0)
{
return true;
}
return false;
}
private void btnLogin_Click(object sender, EventArgs e)
{
string path = txtAdPath.Text.Trim();
string username = txtUserNo.Text.Trim();
string pwd = txtPwd.Text.Trim();
LDAPHelper objldap = null;
bool flag = false;
try
{
objldap = new LDAPHelper();
flag = objldap.OpenConnection(path, username, pwd);
}
catch (Exception ex)
{
lbMsg.Text = "安全系统验证连接失败" + ex.Message;
}
finally
{
if (objldap != null)
{
objldap.closeConnection();
}
}
if (flag)
{
lbMsg.Text = "安全系统验证成功";
}
else
{
lbMsg.Text = "安全系统验证失败";
}
}
实现效果图如下: