使用PHP成功连接到LDAP,但无法与C#连接

时间:2017-11-17 23:49:07

标签: c# php ldap

我使用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);
            }

提前致谢!

1 个答案:

答案 0 :(得分:0)

可能是你的图书馆没有实现LDAP,而是一个名为ActiveDirectory的奇怪的非标准Microsoft版本的LDAP,只有当服务器是一个真正的ActiveDirectory服务器并且不能轻易地工作时才能工作当您使用非Microsoft服务器,例如OpenLDAP?

可能吗?