我是LDAP新手,想使用.Net连接到LDAP服务器以验证用户凭据.以下代码返回错误:
The LDAP server is unavailable
但是验证可以在Java代码中很好地进行.请让我知道我哪里出了问题.
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "LDAP://192.168.65.201:389/DC=be,DC=ndl,DC=CompanyName,DC=com"))
{
bool a= pc.ValidateCredentials("myname@CompanyName.com","password");
}
解决方法:
首先-PrincipalContext仅适用于Active Directory,不适用于任何其他LDAP服务器.
其次:您要为构造函数指定无效的参数. Check out the MSDN docs关于哪些构造函数可用于PrincipalContext.
您可以只定义一个ContextType参数,在这种情况下,PrincipalContext是针对您连接到的当前域构造的:
var ctx = new PrincipalContext(ContextType.Domain);
或者,您可以使用带有第二个字符串参数的构造函数,该参数表示您的域的域名(仅域名-不是完整的LDAP路径!):
var ctx = new PrincipalContext(ContextType.Domain, "CompanyName.com");
然后,您将在根级别连接到该特定域.
或第三,您可以指定第三个参数,该参数定义该域中要连接的容器:
var ctx = new PrincipalContext(ContextType.Domain, "CompanyName.com",
"CN=Users,DC=be,DC=ndl,DC=CompanyName,DC=com");
因此,如果您使用的是Active Directory,则需要找到合适的构造函数并提供正确的参数才能使其正常工作.
标签:ldap,c,net 来源: https://codeday.me/bug/20191121/2054088.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。