【问题标题】:Getting user group in LDAP using Novell.Directory.Ldap.NETStandard使用 Novell.Directory.Ldap.NETStandard 在 LDAP 中获取用户组
【发布时间】: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#...

标签: c# f# ldap


【解决方案1】:

在调用Search() 时,您必须提供所需的属性(即memberOf 以读取用户组)作为字符串数组而不是null

let attrs = [| "SAMAccountName"; "memberOf"; |];
let searcher = connection.Search(searchbase, scope, filter, attrs, false);

您也可以通过"*" 获取所有非操作属性。

【讨论】:

    猜你喜欢
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 2017-06-27
    • 2017-10-30
    • 1970-01-01
    相关资源
    最近更新 更多