在 .NET 上创建 LDAP 连接

Nee*_*rma -1 .net c# active-directory

我正在尝试使用 c# 创建 LDAP Cnnection。

我找到了这台服务器,它让 LDAP 服务器进行测试

http://www.forumsys.com/en/tutorials/integration-how-to/ldap/online-ldap-test-server/

我用谷歌搜索了很多帖子并试图创建一个统一的代码

  string domain = "ldap://ldap.forumsys.com/ou=mathematicians";
            string username = "cn=read-only-admin,dc=example,dc=com";
            string password = "password";
            string LdapPath = "Ldap://ldap.forumsys.com:389/ou=scientists,dc=example,dc=com";


            string domainAndUsername = domain + @"\" + username;
            DirectoryEntry entry = new DirectoryEntry(LdapPath, domainAndUsername, password);
            try
            {
                // Bind to the native AdsObject to force authentication.
                Object obj = entry.NativeObject;
                DirectorySearcher search = new DirectorySearcher(entry);
                search.Filter = "(SAMAccountName=" + username + ")";
                search.PropertiesToLoad.Add("cn");
                SearchResult result = search.FindOne();

                // Update the new path to the user in the directory
                LdapPath = result.Path;
                string _filterAttribute = (String)result.Properties["cn"][0];
            }
            catch (Exception ex)
            {

                throw new Exception("Error authenticating user." + ex.Message);
            }
Run Code Online (Sandbox Code Playgroud)

此代码未连接它给出了意外错误..

我还尝试了其他一些凭据,但它们也无济于事......

AUTH_LDAP_SERVER_URI = “ldap://ldap.forumsys.com”
AUTH_LDAP_BIND_DN = “cn=read-only-admin,dc=example,dc=com”
AUTH_LDAP_BIND_PASSWORD = “password”
AUTH_LDAP_USER_SEARCH = LDAPSearch(“ou=mathematicians,dc=example,dc=com”,
ldap.SCOPE_SUBTREE, “(uid=%(user)s)”)

--------------------
$config[‘LDAP’][‘server’] = ‘ldap://ldap.forumsys.com';
$config[‘LDAP’][‘port’] = ‘389’;
$config[‘LDAP’][‘user’] = ‘cn=read-only-admin,dc=example,dc=com';
$config[‘LDAP’][‘password’] = ‘password';

-------------------------
$config[‘LDAP’][‘server’] = ‘ldap://ldap.forumsys.com/ou=mathematicians';
$config[‘LDAP’][‘port’] = ‘389’;
$config[‘LDAP’][‘user’] = ‘gauss';
$config[‘LDAP’][‘password’] = ‘password';

--------------------------
OpenDSObject/GetObject functions, but don’t see a way to run a query with the ASDI objects.
Set LDAP = GetObject(“LDAP:”)
Set root = LDAP.OpenDSObject(“LDAP://ldap.forumsys.com:389?, “cn=read-only-admin,dc=example,dc=com”, “password”, 0)
Set ou = LDAP.OpenDSObject(“LDAP://ldap.forumsys.com:389/ou=mathematicians,dc=example,dc=com””, “cn=read-only-admin,dc=example,dc=com”, “password”, 0)
Set user = LDAP.OpenDSObject(“LDAP://ldap.forumsys.com:389/uid=riemann,dc=example,dc=com”, “cn=read-only-admin,dc=example,dc=com”, “password”, 0)
Run Code Online (Sandbox Code Playgroud)

我需要一些我所缺少的建议。任何资源都会有所帮助

Sam*_*han 5

我在这台服务器上遇到了一些类似的问题,谷歌把我送到了这里。

我看到的一个问题是 LDAP 路径中的区分大小写的问题。我们也应该指定 AuthenticationType 。

请检查以下应该工作的代码块。

string ldapServer = "LDAP://ldap.forumsys.com:389/ou=scientists,dc=example,dc=com";
string userName = "cn=read-only-admin,dc=example,dc=com";
string password = "password";

var dirctoryEntry = new DirectoryEntry(ldapServer, userName, password, AuthenticationTypes.ServerBind);

try {
    object nativeObject = dirctoryEntry.NativeObject;
    //Rest of the logic
} catch (Exception ex) {
    //Handle error
}
Run Code Online (Sandbox Code Playgroud)