在C#中访问AD,核对输入的用户名和密码是否正确 (转)
系统登录中,和邮件系统合并,系统本来的用户名和密码可以登录,用邮件用户密码也可以登录。
/// <summary>
/// 登陆
/// </summary>
/// <param name="strUser">用户ID</param>
/// <param name="strPsw">用户密码</param>
/// <returns></returns>
public bool Login(string strUser,string strPsw)
{
string SQL=" SELECT U.USERID,U.USERNAME"
+" FROM BS_USER U "
+" WHERE U.STATUS=0 AND U.USERID='"+strUser+"' AND USERPWD='"+strPsw+"'";
DataTable Dt=IBSConn.getDataSet(SQL).Tables[0];
///AD 验证
if(Dt.Rows.Count==0)
{
AD_China ad=new AD_China();
if(!ad.IsAuthenticated(strUser,strPsw)) return false;
}
SQL=" SELECT U.USERID,U.USERNAME,U.Email,O.ORGID,O.ORGNAME,F.OrgID AS FinOrgID,F.FincName,O.ORGFORM,PRMTNAME AS ORGFORMNAME, O.NODEID,O.TREEID"
+",OP.OrgID ParentOrgID ,OP.OrgName ParentOrgName"
+" FROM BS_USER U LEFT JOIN BS_ORG O ON U.ORGID=O.ORGID"
+" LEFT JOIN BS_ORG OP ON O.SuperOrgID=OP.OrgID"
+" LEFT JOIN BS_FinanceOrg F ON O.FincID=O.FincID "
+" LEFT JOIN DBO.BS_PRMT P ON P.PRMTTYPEID=1 AND PRMTID=O.ORGFORM"
+" WHERE U.STATUS=0 AND( U.USERID='"+strUser+"'OR U.Email='"+strUser+"')"; // 验证邮件用户密码
Dt=IBSConn.getDataSet(SQL).Tables[0];
if(Dt.Rows.Count>=1)
{
//其他操作
}else return false;
return true;
}
AD验证类:
public class AD_China
{
private string _path;
private string _filterAttribute;
public AD_China()
{
//
// TODO: 在此处添加构造函数逻辑
//
_path="LDAP://china.com/DC=china,DC=com";
/*
<add key="AdminUser" value="R7xM12rqyGA="/>
<add key="AdminUserPassword" value="pZ/cZiaO9TE="/>
*/
}

public bool IsAuthenticated(string username, string pwd)
{
try
{
DirectoryEntry entry = new DirectoryEntry( _path, username, pwd);
// 绑定到本机 AdsObject 以强制身份验证。
Object obj = entry.NativeObject;
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(SAMAccountName=" + username + ")";
search.PropertiesToLoad.Add("cn");
SearchResult result = search.FindOne();
if(null == result)
{
return false;
}
// 更新目录中的用户的新路径
_path = result.Path;
_filterAttribute = (String)result.Properties["cn"][0];
}
catch (Exception ex)
{
// throw new Exception("对用户进行身份验证时出错。 " + ex.Message);
return false;
}
return true;
}
}


浙公网安备 33010602011771号