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
6  {
7
8    private string dominoServer;
9    /**//// <summary>
10    /// domino服务器地址
11    /// </summary>
12    public string DominoServer
13    {
14      get { return dominoServer; }
15      set { dominoServer = value; }
16    }
17    private string ldapServer;
18    /**//// <summary>
19    /// ldap服务器地址
20    /// </summary>
21    public string LdapServer
22    {
23      get { return ldapServer; }
24      set { ldapServer = value; }
25    }
26
27    private string userName;
28    /**//// <summary>
29    /// 用户名
30    /// </summary>
31    public string UserName
32    {
33      get { return userName; }
34      set { userName = value; }
35    }
36
37    private string password;
38    /**//// <summary>
39    /// 密码
40    /// </summary>
41    public string Password
42    {
43      get { return password; }
44      set { password = value; }
45    }
46    /**//// <summary>
47    /// 实例化
48    /// </summary>
49    /// <param name="userName">用户名</param>
50    /// <param name="password">密码</param>
51    public LDAPHelper(string userName, string password)
52    {
53      try
54      {
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
67      {
68        throw;
69      }
70    }
71
72    /**//// <summary>
73    /// 通过domino LDAP服务验证用户名密码是否正确
74    /// </summary>
75    /// <param name="userName">用户名</param>
76    /// <param name="password">密码</param>
77    /// <returns></returns>
78    public bool VerifyUser()
79    {
80      try
81      {
82        DirectorySearcher searcher = prepareSearcher();
83
84        //执行以下方法时没抛出异常说明用户名密码正确
85        SearchResult rs = searcher.FindOne();
86
87        return true;
88      }
89      catch
90      {
91        return false;
92      }
93    }
94
95    /**//// <summary>
96    /// Prepare DirectorySearcher
97    /// </summary>
98    /// <returns>DirectorySearcher</returns>
99    private DirectorySearcher prepareSearcher()
100    {
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  }

时间: 2024-09-17 03:48:37

C#使用Domino的LDAP服务验证用户的相关文章

Domino的LDAP与WingFTP集成

目前根据公司的需求,结合相关FTP软件的具体功能.建议使用Domino与WingFTP进行集成. 为什么不是通过以前提到的Domino与AD进行集成,是因为Domino在AD进行集成时,密码同步的问题一直无法解决,而且Domino与AD的集成配置相当的麻烦.所以目前暂时放弃使用此方案. Domino与WingFTP集成,需要两个步骤.一是DominoLDAP的配置,二是WingFTP的配置. 一. 配置Domino的LDAP服务 有关Domino的LDAP服务配置,如下: 首先需要注意的是Dom

Ubuntu10.04安装配置LDAP服务

  注:以Ubuntu 10.04版本为例,LDAP服务器和客户端为同一台机器,最新openldap软件服务器端无单独的配置文件,而是将配置信息保存于数据库中. 1. LDAP服务器端安装与配置 1.1 安装LDAP服务器相关软件 sudo apt-get install slapd ldap-utils 1.2 配置LDAP服务器数据库 sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldifsudo ldapa

java验证用户是否已经登录 java实现自动登录_java

本文为大家分享了java验证用户是否已经登录与实现自动登录的详细代码,供大家参考,具体内容如下 1.验证用户是否已经登录 package cn.hongxin.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletExceptio

Hyperion与domino的ldap集成,实现单点登录需要怎么样配制基本DN一项?

问题描述 请各位大虾指教:Hyperion与domino的ldap集成,实现单点登录需要怎么样配制基本DN一项?使用一般的Ldap浏览器,基本DN配制成o=ygkm就可以获取到相应的用户信息了,但是在Hyperion的配制页面中基本DN配制成o=ygkm就会提示"100:3515:无法连接,基本DN的值无效",如果按照Hyperion的提示配制成DN=......,出现同样的提示. 解决方案 解决方案二:各位大虾有没有知道这个该怎么配制的啊?

A5论坛再次验证用户才是网站的根本

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 最近发生的事挺多的,对于站长来说发生最大的一件事相信就是A5论坛换域名了,这对于长期在A5论坛发外链的朋友来说,的确是个很大的打击,然而细想下来却有很多方面值得站长思考.不少朋友问守护为什么不针对此事写一篇自己的看法,因为我一直在观望,所以也就没有下笔.今天,针对我心里的想法,查看了一下站长工具,有些话就不得不得站长交流一下. 我们知道A5论

《OpenStack云计算实战手册(第2版)》——1.9 配置服务的租户和服务的用户

1.9 配置服务的租户和服务的用户 服务端点创建完成以后,接下来配置它们以便其他OpenStack服务能够调用它们.为此,要为每个服务都配置一个特定的service租户,并指定对应的用户名和密码.这样的目的是保证更高的安全性.以及用来为云环境做故障排除和审计等工作.对于每一个需要OpenStack身份认证服务来验证和授权的服务,都需要在该服务启动之前,在其相关的配置文件里详细写明用于Keystone验证的用户名和密码.例如,glance服务是在/etc/glance/glance-registr

在ASP应用中验证用户身份

    交互式的Web应用比那些只提供静态Web页面的站点要求考虑更多的安全问题.注册与密码是保护敏感信息最为常用的手段.由于ASP没有直接提供验证用户身份的方法,因此,用户必须执行登录过程以便应用系统保存和提取用户相关信息.    一.示例站点概貌    本文通过一个示例站点ASPSecurity说明ASP应用中注册与密码保护的一般实现过程.我们把用户信息保存在Web服务器上的一个Access97数据库中,DSN名称为   ASPSecurity.唯一的数据库表拥有以下字段:Signon(文本

Login控件在UpdatePanel内当验证用户信息成功后出现页面刷新的解决办法

解决|控件|刷新|页面     随着AJAX.NET BETA 2在今天发布,让我们看到了AJAX与ASP.NET2.0紧密结合的快捷与高效,我们甚至可以无需写一句JS代码即可让ASP.NET的网页得到以往要花上数小时编写的JS代码所实现的无刷新效果.而将这一切结合到ASP.NET也是那么的容易,只需将控件简单地移到UPDATEPANEL控件之内再设置几个参数即可实现.但是,在体验AJAX.NET带给开发者便利的同时,也会发现AJAX.NET有时也并不是十全十美.就像笔者近日遇到ASP.NET2

在ASP应用中验证用户身份(1)

交互式的Web应用比那些只提供静态Web页面的站点要求考虑更多的安全问题.注册与密码是保护敏感信息最为常用的手段.由于ASP没有直接提供验证用户身份的方法,因此,用户必须执行登录过程以便应用系统保存和提取用户相关信息. 一.示例站点概貌 本文通过一个示例站点ASPSecurity说明ASP应用中注册与密码保护的一般实现过程.我们把用户信息保存在Web服务器上的一个Access97数据库中,DSN名称为ASPSecurity.唯一的数据库表拥有以下字段:Signon(文本,注册的用户名),Pass