c# – 如何在.NET中验证LDAP
我想在具有任何目录服务的
Windows操作系统上验证我的应用程序的用户名和密码.例如,它可以是微软活动目录,Novell eDirecotry或SunOne.我已经知道如何使用c#为Microsoft Active Direcotry本机做这个代码. (我完全放弃使用ADSI并创建一个低级别的com组件)
我尝试使用Novel eDirecotory认证的方式是我安装了Mono项目.在单声道项目中,他们为您提供Novell.Directory.ldap.dll代码看起来与Microsoft Active Directory有所不同(http://www.novell.com/coolsolutions/feature/11204.html) 对于SunOne,我被告知要使用与活动目录相同的代码,但是ldap连接字符串有点不同(http://forums.asp.net/t/354314.aspx) 为了使我的项目复杂化,大多数客户使用“服务帐户:”,这意味着我需要使用管理用户名和密码进行绑定,才能验证常规用户名和密码.我的问题分为两部分. 1)从上面我已经解释过的是,这是正确的方向,我应该对每一个个性化的服务进行认证? 2)我觉得我根本不需要做任何这个代码.我也觉得使用服务账户的规定根本不重要.如果我所关心的是在Windows机器上验证用户名和密码,为什么甚至需要使用ldap?我的意思是想想.当您早上登录机器时,您不必提供服务帐户登录.我可以通过使用runas功能在DOS提示符下轻松地验证用户名和密码,我将被拒绝,并且可以解析文本文件.我确定有其他方式我可以传递一个用户名和密码到我所在的Windows操作系统,并会告诉我,如果一个用户名和密码对它的域是有效的.我对吗?你们有什么建议的方法吗? 迈克尔·埃文奇克 解决方法
所有这一切可以用System.DirectoryServices.Protocols完成.如果您创建到目录的LdapConnection,您可以使用服务帐户进行绑定,然后进行后续绑定来验证凭据.
服务帐户通常用于限制对服务器的认证机制的访问.这样一来,街上的随机人员就可以尝试使用LDAP服务器进行身份验证. 另外,您希望每个用户在登录时都能提供其可分辨的名称?使用Active Directory,只需要sAMAccountName,而像eDirectory和Sunone这样的其他提供者则需要使用可分辨名称进行身份验证. 要执行此类型的身份验证,您需要使用提供的服务帐户对服务器进行身份验证,对具有给定用户名的用户执行搜索,并获取用户的可分辨名称.然后,您可以使用该可分辨名称和提供的密码进行身份验证. 这将适用于所有LDAP系统,Active Directory除了仅仅sAMAccountName将是快乐之外. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |