【发布时间】:2021-10-22 09:03:16
【问题描述】:
我有一个使用 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 中找不到如何使用它的任何信息。
【问题讨论】:
-
澄清一下,你知道如何在 C# 中做你想做的事吗?我从未使用过 LDAP,因此无法解决这个问题,但如果您知道如何在 C# 中执行此操作,我很乐意帮助将其转换为 F#...