使用 Novell.Directory.Ldap.NETStandard 在 LDAP 中获取用户组
Getting user group in LDAP using Novell.Directory.Ldap.NETStandard
我有使用 Novell.Directory.Ldap.NETStandard 和 F# 获取用户详细信息的简单服务(如果需要,我可以提供 c# 的脚本,但这部分非常相似),它看起来像这样:
use connection = new LdapConnection();
connection.Connect(credentials.host, LdapConnection.DefaultPort);
connection.Bind($"{credentials.domain}\{credentials.username}", credentials.password);
match connection.Connected with
| true ->
let schema = connection.FetchSchema((connection.GetSchemaDn()));
let filter = $"(SAMAccountName={credentials.username})"
let searcher = connection.Search(String.Empty, LdapConnection.ScopeBase, filter, null, false);
return (searcher |> Some, String.Empty)
| false ->
raise (Exception())
return (None, $"Cannot connect to domain {credentials.domain} with user {credentials.username}")
现在我找不到有关该用户分配到的组的信息,通常当我使用 Directory.Service 我只是添加:
directorySearcher.Filter <- sprintf "(SAMAccountName=%s)"credentials.username
到目录搜索器,我可以过滤掉这些信息(因为 Directory.Service 是 windows 限制我不能在这个项目中使用它),但我找不到任何信息如何使用它在 Novell.Directory.Ldap.
调用 Search()
时,您必须提供所需的属性(即 memberOf
以便读取用户组)作为字符串数组而不是 null
:
let attrs = [| "SAMAccountName"; "memberOf"; |];
let searcher = connection.Search(searchbase, scope, filter, attrs, false);
也可以通过"*"
获取所有非操作属性
我有使用 Novell.Directory.Ldap.NETStandard 和 F# 获取用户详细信息的简单服务(如果需要,我可以提供 c# 的脚本,但这部分非常相似),它看起来像这样:
use connection = new LdapConnection();
connection.Connect(credentials.host, LdapConnection.DefaultPort);
connection.Bind($"{credentials.domain}\{credentials.username}", credentials.password);
match connection.Connected with
| true ->
let schema = connection.FetchSchema((connection.GetSchemaDn()));
let filter = $"(SAMAccountName={credentials.username})"
let searcher = connection.Search(String.Empty, LdapConnection.ScopeBase, filter, null, false);
return (searcher |> Some, String.Empty)
| false ->
raise (Exception())
return (None, $"Cannot connect to domain {credentials.domain} with user {credentials.username}")
现在我找不到有关该用户分配到的组的信息,通常当我使用 Directory.Service 我只是添加:
directorySearcher.Filter <- sprintf "(SAMAccountName=%s)"credentials.username
到目录搜索器,我可以过滤掉这些信息(因为 Directory.Service 是 windows 限制我不能在这个项目中使用它),但我找不到任何信息如何使用它在 Novell.Directory.Ldap.
调用 Search()
时,您必须提供所需的属性(即 memberOf
以便读取用户组)作为字符串数组而不是 null
:
let attrs = [| "SAMAccountName"; "memberOf"; |];
let searcher = connection.Search(searchbase, scope, filter, attrs, false);
也可以通过"*"
获取所有非操作属性