C#使用Domino的LDAP服务验证用户 – 技术++ – 博客园

首先,Domino的LDAP服务配置为不能匿名访问,不然就没意义了。

 

安全性中,internet认证设置为:较多名称变换,较低安全性。

这样的话用户名可以使用Domino个人文档中的:名+空格+姓、简称、Email地址

如果不需要的话也可以不这样设置。

密码为:Internet密码

 

默认情况下Domino的LDAP属性没有uid(简称),需要自己添加下。

原理:使用输入的用户名密码执行一个LDAP查询,如果没有抛出异常,说明用户名密码正确。

  1using System.DirectoryServices;
  2using System.Configuration;
  3using System.Text;
  4
  5    public class LDAPHelper
  6C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~    {
  7
  8        private string dominoServer;
  9C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        /**//// <summary>
 10        /// domino服务器地址
 11        /// </summary>

 12        public string DominoServer
 13C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        {
 14C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~            get return dominoServer; }
 15C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~            set { dominoServer = value; }
 16        }

 17        private string ldapServer;
 18C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        /**//// <summary>
 19        /// ldap服务器地址
 20        /// </summary>

 21        public string LdapServer
 22C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        {
 23C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~            get return ldapServer; }
 24C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~            set { ldapServer = value; }
 25        }

 26
 27        private string userName;
 28C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        /**//// <summary>
 29        /// 用户名
 30        /// </summary>

 31        public string UserName
 32C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        {
 33C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~            get return userName; }
 34C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~            set { userName = value; }
 35        }

 36
 37        private string password;
 38C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        /**//// <summary>
 39        /// 密码
 40        /// </summary>

 41        public string Password
 42C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        {
 43C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~            get return password; }
 44C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~            set { password = value; }
 45        }

 46C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        /**//// <summary>
 47        /// 实例化
 48        /// </summary>
 49        /// <param name=”userName”>用户名</param>
 50        /// <param name=”password”>密码</param>

 51        public LDAPHelper(string userName, string password)
 52C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        {
 53            try
 54C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~            {
 55                //this.LdapServer = ConfigurationManager.AppSettings[“LDAPServer”].ToString();
 56
 57                //this.DominoServer = ConfigurationManager.AppSettings[“DominoServer”].ToString();
 58
 59                this.LdapServer = 192.176.0.46;
 60
 61                this.DominoServer= 192.176.0.46
 62
 63                this.UserName = userName;
 64                this.Password = password;
 65            }

 66            catch
 67C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~            {
 68                throw;
 69            }

 70        }

 71
 72C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        /**//// <summary>
 73        /// 通过domino LDAP服务验证用户名密码是否正确
 74        /// </summary>
 75        /// <param name=”userName”>用户名</param>
 76        /// <param name=”password”>密码</param>
 77        /// <returns></returns>

 78        public bool VerifyUser()
 79C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        {
 80            try
 81C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~            {
 82                DirectorySearcher searcher = prepareSearcher();
 83
 84                //执行以下方法时没抛出异常说明用户名密码正确
 85                SearchResult rs = searcher.FindOne();
 86
 87                return true;
 88            }

 89            catch
 90C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~            {
 91                return false;
 92            }

 93        }

 94
 95C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        /**//// <summary>
 96        /// Prepare DirectorySearcher
 97        /// </summary>
 98        /// <returns>DirectorySearcher</returns>

 99        private DirectorySearcher prepareSearcher()
100C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~C使用Domino的LDAP服务验证用户 - 技术++ - 博客园 - 夏 - 隨心漂泊~~~        {
101
102            DirectoryEntry root = new DirectoryEntry(this.LdapServer, this.UserName, this.Password, AuthenticationTypes.None);
103            DirectorySearcher searcher = new DirectorySearcher(root);
104
105            //LDAP搜索的过滤条件,cn为用户名,uid为用户简称
106
107            searcher.Filter = (&(objectClass=dominoPerson)(|(cn= + this.UserName +
108
109)(uid= + this.UserName + )(mail= + this.UserName + )));
110
111            
112            //searcher.Filter = “(&(objectClass=dominoPerson)(cn=” + this.UserName +”))”;
113            return searcher;
114
115        }

116    }

引文来源  C#使用Domino的LDAP服务验证用户 – 技术++ – 博客园