ldap实现用户认证
LDAP的用户认证类。
public class LDAPHelper{private DirectoryEntry _objDirectoryEntry;/// <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 (null == _objDirectoryEntry){return false;}else if (_objDirectoryEntry.Properties!=null&&_objDirectoryEntry.Properties.Count > 0){return true;}return false;}/// <summary>/// 检测一个用户和密码是否正确/// </summary>/// <param name="strLDAPFilter">(|(uid= {0})(cn={0}))</param>/// <param name="TestUserID">testuserid</param>/// <param name="TestUserPwd">testuserpassword</param>/// <param name="ErrorMessage"></param>/// <returns></returns>public bool CheckUidAndPwd(string strLDAPFilter, string TestUserID, string TestUserPwd, ref string ErrorMessage){bool blRet = false;try{//创建一个检索DirectorySearcher deSearch = new DirectorySearcher(_objDirectoryEntry);//过滤名称是否存在deSearch.Filter =strLDAPFilter;deSearch.SearchScope = SearchScope.Subtree;//find the first instance SearchResult objSearResult = deSearch.FindOne();//如果用户密码为空if (string.IsNullOrEmpty(TestUserPwd)){if (null != objSearResult && null != objSearResult.Properties && objSearResult.Properties.Count > 0){blRet = true;}}else if (null != objSearResult && !string.IsNullOrEmpty(objSearResult.Path)){//获取用户名路径对应的用户uidint pos = objSearResult.Path.LastIndexOf('/');string uid = objSearResult.Path.Remove(0, pos + 1);DirectoryEntry objUserEntry = new DirectoryEntry(objSearResult.Path, uid, TestUserPwd, AuthenticationTypes.None);if (null != objUserEntry && objUserEntry.Properties.Count > 0){blRet = true;}}}catch (Exception ex){if (null != _objDirectoryEntry){_objDirectoryEntry.Close();}ErrorMessage = "检测异常:"+ex.StackTrace;}return blRet;}/// <summary>/// 关闭连接/// </summary>public void closeConnection(){if (null != _objDirectoryEntry){_objDirectoryEntry.Close();}}}
调用过程如下
private void btnCheck_Click(object sender, EventArgs e){string strLDAPFilter = string.Format(txtFilter.Text, txtUserName.Text.Trim()); //deSearch.Filter = "(&(objectClass=user)(sAMAccountName=" + username + "))";string TestUserID = txtUserName.Text;string TestUserPwd = txtPwd.Text;LDAPHelper objldap = new LDAPHelper();string strLDAPPath = txtLDAP.Text;string strLDAPAdminName = txtLUserName.Text;string strLDAPAdminPwd = txtLPwd.Text;string strMsg = "";bool blRet = objldap.OpenConnection(strLDAPPath, strLDAPAdminName, strLDAPAdminPwd);if (blRet){blRet = objldap.CheckUidAndPwd(strLDAPFilter, TestUserID, TestUserPwd, ref strMsg);if (blRet){strMsg = "检测用户名" + TestUserID + "和密码" + TestUserPwd + "成功";}else if (!blRet && string.IsNullOrEmpty(strMsg)){strMsg = "检测用户名" + TestUserID + "和密码" + TestUserPwd + "失败";}}this.txtLog.Text = System.DateTime.Now.ToString() + ":" + strMsg + "\r\n" + "\r\n" + this.txtLog.Text;MessageBox.Show(strMsg);}}
调用过程1
bool checkResult = false;try{string username = Request.Params.Get("username");string userpwd = Request.Params.Get("userpwd");string strLADPath = "LDAP://OU=事业部,DC=HOLD,DC=Company,DC=COM";DirectoryEntry objEntry = new DirectoryEntry(strLADPath);objEntry.AuthenticationType = AuthenticationTypes.None;DirectorySearcher deSearch = new DirectorySearcher(objEntry);//过滤名称是否存在deSearch.Filter = "(&(objectClass=user)(sAMAccountName=" + username + "))";deSearch.SearchScope = SearchScope.Subtree;//find the first instance SearchResult results = deSearch.FindOne();//check username & userpwdif (null != results){DirectoryEntry objUserEntry = new DirectoryEntry(results.Path, username, userpwd);if (null != objUserEntry && null != objUserEntry.Properties&& objUserEntry.Properties.Contains("cn")){checkResult = true;}}Response.Write("认证结果:" + checkResult.ToString());}catch (System.Exception ex){Response.Write("认证异常"+ex.StackTrace);Response.Write("认证结果:" + checkResult.ToString());}
转载于:https://www.cnblogs.com/waban/p/5249509.html
ldap实现用户认证相关推荐
- ldap统一用户认证php,针对LDAP服务器进行身份认证
Symfony提供了不同的方法来配合LDAP服务器使用. Security组件提供: ldap user provider,使用的是 form_login_ldap authentication pr ...
- python 用户认证_Python使用LDAP做用户认证的方法
LDAP(Light Directory Access Portocol)是轻量目录访问协议,基于X.500标准,支持TCP/IP. LDAP目录以树状的层次结构来存储数据.每个目录记录都有标识名(D ...
- Python使用LDAP做用户认证
LDAP(Light Directory Access Portocol)是轻量目录访问协议,基于X.500标准,支持TCP/IP. LDAP目录以树状的层次结构来存储数据.每个目录记录都有标识名(D ...
- Rhel7 Ldap为本地用户认证方式,设置域、服务器位置和下载key
Rhel7 Ldap为本地用户认证方式,设置域.服务器位置和下载key yum -y install sssd authconfig-gtk krb5-workstation system-confi ...
- 用java进行LDAP用户登陆(用户认证)及修改密码
为什么80%的码农都做不了架构师?>>> 一.用户认证 public String execute(){Hashtable env = new Hashtable();Stri ...
- 4.监控展示系统Grafana和LDAP用户认证平台集成方法
文章目录 1.LDAP平台配置 1.1 创建grafana应用的组织单元GrafanaGroups 1.2 GrafanaGroups组的对象和属性 1.3 将test01用户加入Grafana-ad ...
- java ladp用户认证_java – LDAP:如何使用连接详细信息验证用户身份
我无法使用LDAP对用户进行身份验证.我有以下细节: URL=ldap://10.10.10.10:389 LDAP BASE:DC=lab2,DC=ins LDAP Bind Account: CN ...
- linux认证授权系统,linux高级操作系统用户认证与授权-20210323002921.doc-原创力文档...
HYPERLINK "/" 长沙理工大学 <Linux高级操作系统>课程设计报告 基于Linux的用户认证与授权研究 廖正磊 学 院 计算机与通信工程 专业 计算机科学 ...
- 实战部署MySQL用户认证的Postfix邮件系统(3)
实战部署Postfix+MySQL+Dovecot+Postfixadmin+Extmail邮件系统(3) -----构建开源邮件系统系列 如果您对本系列文章感兴趣,可以通过点击以下链接查看全文: 点 ...
最新文章
- 用于ONNX的TensorRT后端
- Java 两个引用类型相等_java-Spring配置:2个具有相同类引用的bean
- 鱼缸式百分比信息图表,这样计算才正确
- HTML超文本描述语言,HTML超文本标记语言的介绍
- python绘制饼图explode_python通过matplotlib生成复合饼图
- 牛客 - 「土」巨石滚滚(贪心)
- windows下手动安装composer
- 初学计算机语言者(C语言,C++,java,pytion,C#)
- Android SDK Manager配置
- 给已经做好的GHO文件添加密码
- springboot项目打成可依赖jar包_用IDEA把SpringBoot项目打成jar发布项目
- Codeforces 719B Anatoly and Cockroaches(元素的交叉排列问题)
- HTML5生日快乐代码 (烟花蛋糕+3D相册) HTML+CSS+JavaScript
- mac 回车键、空格键失灵(非物理原因)解决方法
- Flink案例代码,面试题
- Spring Boot实训开发个人博客4
- 为什么要用 Tair 来服务低延时场景 - 从购物车升级说起
- 如何使用bibtex插入参考文献(基于WinEdit)
- springboot结合注解动态获取数据库表
- 计算机系统中所有实际物理装置的,计算机系统中所有实际物理装置的总称是计算机________件...
热门文章
- IIC挂死问题解决过程
- 解决krpano全景视频在QQ浏览器、安卓不能正常播放的问题
- linux ifcfg-33 没有eth0解决方法
- Jenkins中的一些问题解决(~~不断更新~~)
- 解决Android Studio安装过程中“SDK tools directory is missing”的问题
- 查找在Git中删除文件的时间
- 为什么null为对象,并且null和undefined有什么区别?
- idea,Androidstudio快捷键大全,抽取成员变量快捷键
- 运行控制器方法之前先执行注解@ModelAttribute的方法
- 怎么让电脑运行速度变快_加快电脑运行速度的6个秘笈,系统安装,电脑维修必备技巧...