我只是想知道是否有人知道或制作了一个围绕Active Directory的包装器,以便能够在.net中轻松查询它?有点像"LINQ-to-ActiveDirectory"或一些SQL方言,即能够做"SELECT DISTINCT(DEPARTMENT)FROM/Users/SomeOU/AnotherOU"或"SELECT user FROM domain"等等.
据我所知,有可能以"SQLesque"方式查询WMI和IIS,我只是想知道Active Directory是否也可以有类似的东西,而不必学习另一种查询语言(LDAP)?
我的应用程序每天进行一次LDAP查询,并获取给定容器中的所有用户和组.一旦获取,我的应用程序将遍历组的用户列表,仅将新的用户添加到我的应用程序的数据库(它只添加用户名).
如果有50,000个用户,我的应用程序服务器每天忙于执行此操作45分钟.
有没有办法在我的LDAP查询中指定我需要"delta",以便我只检索自上次LDAP查询以来添加/修改/删除的用户?
我已经设置了一个LDAP查询,该查询成功physicaldeliveryofficename从Windows Active Directory中提取字段中的所有数据:
我还设置了一个View,它使用查询来进一步细化列表,因此我确信查询本身正在运行:
当我尝试使用Feeds Importers获取该数据并将其添加到我的Offices内容类型时,会出现此问题.这是我的设置:
基本设置
名称:办公室附加到内容类型:使用独立形式定期导入:1天提交时导入:已选中
Fecher
已选中LDAP Query Fetcher
LDAP查询提取程序
LDAP查询:HPSI办公室(这是正确的查询)
分析器
选择了LDAP Entry Parser for Feeds
处理器
节点处理器已选中
节点处理器
Bundle:Office语言:语言中性插入新节点:插入新节点更新现有节点:更新现有节点文本格式:纯文本(也尝试过HTML)在Feed中缺少先前导入的节点时要采取的操作:删除不存在的节点:目前正在使用用户1,还尝试过匿名授权:已检查过期节点:从不
制图
来源:[physicaldeliveryofficename]目标:标题(标题)用作唯一
当我运行这个Feed导入器时,唯一发生的事情是使用空白标题创建一个Office(请参阅最后一张图片.)任何人都可以告诉我为什么这个导入器在LDAP查询和视图依赖于它有效吗?
更新:我在Drupal.org上针对LDAP Feeds打开了一个问题,看起来我不是唯一遇到此问题的人.https://www.drupal.org/node/2685009
我正在尝试编写一个LDAP查询,它将发现用户是否是与通配符查询匹配的组的成员,并且我正在尝试使用LDAP_MATCHING_RULE_IN_CHAIN OID来执行此操作.我基本上按照这个页面上的示例2:
http://support.microsoft.com/kb/914828
我发现这个方法在域内运行良好,即如果user1在group1中,group1在group2中,那么我可以编写一个匹配"*2"的查询,LDAP查询将找到嵌套关系并将用户与组匹配.
但是,现在我被要求支持同一个林中域之间的关系.所以现在我有:
我希望能够将user1与group2相匹配....我无法弄清楚如何使LDAP_MATCHING_RULE_IN_CHAIN执行此操作:
我已经尝试将查询的基础设置为以下内容:
谁知道我怎么能做这个工作?
在我正在处理的 php 页面中,建立了 LDAP 连接,从中拉出 cn 条目列表并将其放入下拉列表中。下拉列表中的选择通过表单提交发送到另一个 php 脚本,该脚本根据 LDAP 检查选定的 cn 以获取更多相关信息。
对于大多数名称,这没有问题;however, a cn was recently added that includes parentheses enclosing a nickname, and when that name is selected it causes the ldap_search() method to return false. 下面是代码,其中 $employeename 是经过消毒的员工姓名。
...
$dn = "cn=users,dc=our-domain,dc=com";
$filter = "(cn=".$employeename.")";
$attrs = array("cn", "mail");
$rslt = ldap_search($ldapsvr, $dn, $filter, $attrs);
$entries = ldap_get_entries($ldapsvr, $rslt);
...
Run Code Online (Sandbox Code Playgroud)
$filter 字符串最终为
(cn=First (FN) Last)
Run Code Online (Sandbox Code Playgroud)
其中 First 是名字,Last 是姓氏,FN 是包含的昵称。我曾尝试将括号转义为 \28 和 \29(如提供here,其中还说匹配的括号不需要转义),但没有帮助。有效的名称包括字母、空格和句点(用于中间名首字母)。
(cn=First …Run Code Online (Sandbox Code Playgroud) 我正在 Windows 域 (Active Directory) 中的 TeamCity 7.1.2 中配置 LDAP 身份验证。
基本上它可以工作(我可以使用我的域用户登录!),但是整个公司的每个用户都可以登录。
--> 现在我试图仅限制开发人员的访问权限。
我在 TeamCity 文档中找到了这个示例:
# filtering only users with specified name and belonging to LDAP group "Group1" with DN "CN=Group1,CN=Users,DC=example,DC=com"
teamcity.users.login.filter=(&(sAMAccountName=$capturedLogin$)(memberOf=CN=Group1,CN=Users,DC=example,DC=com))
Run Code Online (Sandbox Code Playgroud)
所以我只需要替换CN=Group1,CN=Users,DC=example,DC=com为我的用户所在的 LDAP 组。
但查询 LDAP 对我来说是全新的,所以我无法找出正确的语法。
我的用户在这里:

所以就是:
CompanyName.de/CompanyName/IT/Entwickler/
Run Code Online (Sandbox Code Playgroud)
“CompanyName”、“IT”和“Entwickler”是组织单位。
我理解语法是:
OU=Entwickler,OU=IT,OU=CompanyName,DC=CompanyName,DC=de
Run Code Online (Sandbox Code Playgroud)
当我将其放入 TeamCity 的配置文件中时,我无法登录,TeamCity 会将其写入其日志文件:
在 LDAP 中搜索:base='DC=CompanyName,DC=de', filter='(&(sAMAccountName=MyUser)(memberOf=OU=Entwickler,OU=IT,OU=CompanyName,DC=CompanyName,DC=de)) ',scope=2,attributes=[sAMAccountName,distinguishedName] 导致错误
和:
用户“MyUser”登录失败:javax.security.auth.login.LoginException:[LDAP:错误代码 32 - 0000208D:NameErr:DSID-031001CD,问题 2001 (NO_OBJECT),数据 0,最佳匹配:'DC=CompanyName ,DC=de'
我究竟做错了什么?
注意:我的查询
可能是正确的,这是 TeamCity 中的一个问题。
(我使用的版本确实存在一些有关 LDAP …
我从未做过任何DAP/AD管理员或查询.现在,我有一个任务,我需要在公司的AD中获得所有USERS; 但不断在查询结果中获取计算机.我使用objectClass = user并仍然获取AD中的所有计算机.我还缺少什么?有没有办法说"objectClass = user而不是objectClass = Computer"?谢谢!
我在使用LDAP Search Filter. 我需要检索的是特定LDAP组的所有用户OU=Staff,OU=Users,OU=Accounts,DC=test,DC=local
我的搜索是:
(&(objectCategory=user)(OU=Staff,OU=Users,OU=Accounts,DC=test,DC=local))
Run Code Online (Sandbox Code Playgroud)
目前它没有返回任何结果。我错过了什么?
我正在尝试使用 goLang 对 LDAP 服务器进行身份验证,同时还尝试搜索用户。我是 goLang 和 LDAP 的新手,所以我提取了 GitHub 代码。在尝试使用以下代码时,我在身份验证中遇到错误
func ExampleLDAPClient_Authenticate() {
client := &ldap.LDAPClient{
Base: "cn=admin,dc=testing,dc=io",
Host: "52.51.245.219",
Port: 389,
UseSSL: false,
BindDN: "cn=admin,dc=testing,dc=io",
BindPassword: "test123",
UserFilter: "(uid='*api*')",
// GroupFilter: "(memberUid=%s)",
Attributes: []string{"givenName", "sn", "mail", "uid"},
}
defer client.Close()
username := "cn=admin,dc=testing,dc=io"
password := "test123"
ok, user, err := client.Authenticate(username, password)
if err != nil {
log.Fatalf("Error authenticating user %s: %+v", "*cn=admin,dc=testing,dc=io*", err)
}
if !ok {
log.Fatalf("Authenticating failed for user %s", "*cn=admin,dc=testing,dc=io*")
}
log.Printf("User: %+v", user) …Run Code Online (Sandbox Code Playgroud) ou's我有一个包含和的用户的活动目录记录subou's。我想得到AD的整个树形结构。
例如,
- Group A
- Sub Group a1
- Sub Group a2
- Group B
- Sub Group b1
- Sub Group b2
- Group C
- Sub Group c1
- Sub Group c2
Run Code Online (Sandbox Code Playgroud)
我有一份所有ou's和的清单subou's。但我希望它像上面的例子一样结构。
我的代码:
$ldap_base_dn = 'DC=example,DC=com';
$filter="(objectClass=organizationalunit)";
$arr= array("dn", "ou");
$sr=ldap_search($ldap_connection, $ldap_base_dn, $filter, $arr);
$info = ldap_get_entries($ldap_connection, $sr);
for ($i=0; $i < $info["count"]; $i++) {
echo $info[$i]["dn"]."<br>";
}
Run Code Online (Sandbox Code Playgroud) ldap ×10
ldap-query ×10
php ×3
openldap ×2
.net ×1
drupal ×1
drupal-feeds ×1
go ×1
teamcity ×1
teamcity-7.0 ×1