我使用PHP成功连接到LDAP,尝试了很多东西,但是当我尝试使用C#时,我总是得到“服务器不可操作”或“LDAP服务器不可用”。 这是PHP代码:
<?php
function login($username='user', $password='pass') {
if (empty($username) || empty($password)) {
throw new BadCredentialsException('Invalid username or password.');
}
if (($ldap = @ldap_connect($url = 'ldap://ds.xyz-example.com', $port = 636)) === false) {
echo('Error connecting LDAP server with url %s on port %d.');
}
if (!@ldap_bind($ldap, sprintf($dn='uid=%s,ou=People,dc=xyz-example,dc=com', $username), $password)) {
$error = ldap_errno($ldap);
if ($error === 0x31) {
echo('Invalid username or password.');
} else {
echo('error during authentication with LDAP.');
}
}
return true;
}
login(); // call the function
?>
这是完美的,但我需要用C#。如何使用端口和dn以及用户使用C#并传递?
以下是我尝试使用C#但出现错误“服务器无法运行”
string ldapPath = "LDAP://ds.xyz-example.com:636/UID=user,OU=People,DC=xyz-example,DC=com";
string user = "user";
string password = "pass";
DirectoryEntry deSSL = new DirectoryEntry(ldapPath, user, password, AuthenticationTypes.SecureSocketsLayer);
try
{
user = deSSL.Properties["uid"][0].ToString(); //if this works, we bound successfully
Response.Output.Write("Success... {0} has bound", user);
}
catch (Exception ex)
{
Response.Output.Write("Bind Failure: {0}", ex.Message);
}
提前致谢!
答案 0 :(得分:0)
可能是你的图书馆没有实现LDAP,而是一个名为ActiveDirectory的奇怪的非标准Microsoft版本的LDAP,只有当服务器是一个真正的ActiveDirectory服务器并且不能轻易地工作时才能工作当您使用非Microsoft服务器,例如OpenLDAP?
可能吗?