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) 我已经设置了一个openLdap服务器实例。
暂时登录需要提供用户的用户名dn,例如
"cn=151test,cn=somecn,ou=someou,dc=mydomain,dc=com"
如何以userPrincipalName以下形式启用登录
151test@mydomain.com?
编辑:这似乎userPrincipalName是一个属性user objectClass,可用于Active Directory,但不可开箱即用地用于 所使用的默认架构openLDAP。
所以问题或多或少变成了:
如何通过 openLDAP 使用(导入)符合 AD 的架构并
userPrincipalName启用以用户名登录
我一直在使用 LMDB 来存储键值对,其中值大小约为 200 字节。我遇到了值大小可能增长到 8KB 或更多的情况。
根据: https: //lmdb.readthedocs.io/en/release/#storage-efficiency-limits和https://github.com/lmdbjava/benchmarks/blob/master/results/20160710/README.md,LMDB是对于以页面大小 (4096KB) 递增的值大小来说最有效,否则可能会因溢出页面而导致碎片。
我的主要问题是:
在LDAP中创建新的objectClasses时选择RDN的最佳做法是什么?我知道你可以选择uid,cn,ou等,但是应该遵循哪些做法?
我尝试使用phpLDAPadmin连接openldap服务器,但是当我尝试使用Generic:User Account创建新的用户帐户时,我收到错误:
"模板值错误此模板使用属性[gidNumber]的选择列表,但选择列表为空.您可能需要在LDAP服务器中创建一些依赖项,以便此属性使用值呈现.或者,您可以在模板文件中定义适当的选择值."
我是ldap的新手,我曾尝试搜索与gidNumber相关的错误,但没有结果,我不知道如何解决它.但是,我可以使用软件LdapAdmin连接服务器并添加新的uid acc,我使用Ubuntu Server 13.04安装ldap服务器.希望有人可以帮助我.
谢谢.
执行下一个代码时出现错误
ldapsearch -xLLL -D "cn=admin,dc=geobolivia,dc=gob,dc=bo" -W > dump-geobolivia.ldif
Run Code Online (Sandbox Code Playgroud)
我的错误是
No such object (32)
Run Code Online (Sandbox Code Playgroud)
而出现在syslog文件中的错误是下一个
Dec 19 18:49:00 geobolivia slapd[3045]: conn=1050 op=103 SRCH base="ou=users,dc=geobolivia,dc=gob,dc=bo" scope=1 deref=3 filter="(&(objectClass=*)(mail=*@*)(givenName=*))"
Dec 19 18:49:00 geobolivia slapd[3045]: <= bdb_substring_candidates: (mail) not indexed
Dec 19 18:49:00 geobolivia slapd[3045]: conn=1050 op=103 SEARCH RESULT tag=101 err=0 nentries=2 text=
Dec 19 18:49:00 geobolivia slapd[3045]: conn=1050 op=104 SRCH base="ou=groups,dc=geobolivia,dc=gob,dc=bo" scope=1 deref=3 filter="(&(objectClass=posixGroup)(cn=el_*))"
Dec 19 18:49:00 geobolivia slapd[3045]: <= bdb_substring_candidates: (cn) not indexed
Dec 19 18:49:00 geobolivia slapd[3045]: conn=1050 op=104 SEARCH RESULT …Run Code Online (Sandbox Code Playgroud) 我在centos vm中有一个ldap服务器+ kerberos设置(使用boot2docker vm运行),并且我试图将它们用于我的Web应用程序身份验证(从主机-我的macbook)。
对于身份验证,我需要使用“ GSSAPI”机制,而不是简单的绑定。'简单绑定'可以正常工作,但是基于“ GSSAPI”的方法不能正常工作。
每当我尝试使用“ ldapwhoami”命令时,都会出现以下错误(我在运行ldapwhoami之前运行“ kinit”以确保我拥有有效的kerberos TGT)
ldap_sasl_interactive_bind_s: Local error (-2)
additional info: SASL(-1): generic failure: GSSAPI Error: Miscellaneous failure (see text (unable to reach any KDC in realm DEV.EXAMPLE.COM, tried 1 KDC)
Run Code Online (Sandbox Code Playgroud)
请注意,LDAP服务器和kerberos服务器端运行正常,这意味着我在centos VM中使用了“ ldapsearch”,“ ldapwhoami”之类的东西对其进行了测试,其中我安装了ldap服务器+ kerberos,它的工作正常。我能够看到适合他们的输出。
仅当我从笔记本电脑(客户端)尝试相同的命令时,我才会收到错误(以上错误)。
注意:甚至我也从笔记本电脑创建了主机主体(host/mymacbook.dev@DEV.EXAMPLE.COM),并使用'kadmin'将其添加到本地krb5.keytab文件中。
以下是我的客户端配置:
客户端(macbook)中的/etc/krb5.conf文件:
[libdefaults]
default_realm = DEV.EXAMPLE.COM
ticket_lifetime = 24000
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
DEV.EXAMPLE.COM = {
kdc = d4dc7089282c
admin_server = krb.example.com
}
[domain_realm]
.dev.example.com = DEV.EXAMPLE.COM
dev.example.com = DEV.EXAMPLE.COM
.example.com = DEV.EXAMPLE.COM …Run Code Online (Sandbox Code Playgroud) 我无法python-ldap通过pip 安装,出现以下错误:
$ sudo pip3.4 install python-ldap
Downloading/unpacking python-ldap
Downloading python-ldap-2.4.19.tar.gz (138kB): 138kB downloaded
Running setup.py (path:/tmp/pip_build_root/python-ldap/setup.py) egg_info for package python-ldap
Traceback (most recent call last):
File "<string>", line 17, in <module>
File "/tmp/pip_build_root/python-ldap/setup.py", line 53
print name + ': ' + cfg.get('_ldap', name)
^
SyntaxError: invalid syntax
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 17, in <module>
File "/tmp/pip_build_root/python-ldap/setup.py", line 53
print name + ': ' + cfg.get('_ldap', name) …Run Code Online (Sandbox Code Playgroud) 我在Python编写代码,ldap3试图在CentOS上的OpenLDAP中创建用户.我的本地开发机器运行的是Windows 8 64位.以下是我的代码.
from ldap3 import Server, Connection, ALL
# define the server
s = Server('ldap://ldap.abcd.com:389', get_info=ALL)
# define the connection
c = Connection(s, user='cn=Manager,dc=mydomain,dc=com', password='Super1')
# perform the Add operation
c.add('uid=user3,ou=People,dc=abcd,dc=com',['person','organizationalPerson','inetOrgPerson', 'posixGroup', 'top','shadowAccount'], {'givenName': 'user3firstname','sn': 'user3lastname', 'uidNumber' : 520,'gidNumber' : 521,'uid': 'user3','cn': 'user3user3lastname'})
# close the connection
c.unbind()
Run Code Online (Sandbox Code Playgroud)
Server和Connection类工作正常.我想因为如果我只运行那2个语句,它就不会产生下面的错误.
LDAPSocketOpenError at /adminservice/users/
unable to send message, socket is not open
Request Method: GET
Request URL: http://127.0.0.1:8000/adminservice/users/
Django Version: 1.8.4
Exception Type: LDAPSocketOpenError
Exception Value:
unable to send message, socket …Run Code Online (Sandbox Code Playgroud) 我是LDAP的新手,正在搜索添加简单的objectClass和Attributes,但仍然出现错误,我想要一个带有简单字符串属性'functionId'的对象'adminFunc',因此我将adminFunc.schema和adminFunc.ldif复制到了架构中夹:
adminFunc.schema:
objectidentifier adminFuncSchema 1.3.6.1.4.1.X.Y
objectidentifier funcAttrs adminFuncSchema:3
objectidentifier funcClass adminFuncSchema:4
attributetype ( funcAttrs:2
NAME 'functionId'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
ORDERING caseIgnoreOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{255} )
objectclass (
funcClass:1
NAME 'adminFunc'
DESC 'Admin permission'
SUP ( top ) AUXILIARY
MAY functionId )
Run Code Online (Sandbox Code Playgroud)
adminFunc.ldif :(已通过运行slaptest自动生成)
dn: cn=adminFunc
objectClass: olcSchemaConfig
cn: adminFunc
olcObjectIdentifier: adminFuncSchema 1.3.6.1.4.1.X.Y
olcObjectIdentifier: funcAttrs adminFuncSchema:3
olcObjectIdentifier: funcClass adminFuncSchema:4
olcAttributeTypes: ( funcAttrs:2 NAME 'functionId' EQUALITY caseIgnoreMat
ch ORDERING caseIgnoreOrderingMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX
1.3.6.1.4.1.1466.115.121.1.15{255} )
olcObjectClasses: ( funcClass:1 NAME 'adminFunc' DESC …Run Code Online (Sandbox Code Playgroud)