我目前尝试通过Linux上的LDAP更改我们的Active Directory Envoirenment中的密码,因为有问题的用户无法访问Windows机器,我们希望保持这种方式.为了更改密码,我目前很难搞清楚如何使用ldapmodify这样做.经过不同网站/论坛/新闻组的大量阅读后,我比以前更加困惑
但是:我尝试以下命令来执行此操作:
ldapmodify -f ldif.example -H ldaps://lab01-dc01.example.com -D 'CN=test,CN=users,DC=lab01,DC=example,DC=com' -x -W
Run Code Online (Sandbox Code Playgroud)
ldif.example的内容:
dn: CN=test,CN=Users,DC=lab01,DC=example,DC=com
changetype: modify
delete: unicodePwd
unicodePwd:: V3VQdXV1STEyLg==
-
add: unicodePwd
unicodePwd:: QmxhVVVraTEyLg==
-
Run Code Online (Sandbox Code Playgroud)
(别担心 - 这些密码不会在任何地方使用,也不是生产环境)
现在 - 每次执行命令时都会出现以下错误:
modifying entry CN=test,CN=Users,DC=lab01,DC=example,DC=com"
ldapmodify: Constraint violation (19)
additional info: 0000216C: AtrErr: DSID-03190EB0, #1:
0: 0000216C: DSID-03190EB0, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 9005a (unicodePwd)
Run Code Online (Sandbox Code Playgroud)
现在,在我阅读之后,出现此错误的原因是密码格式错误或密码策略不允许我使用的密码.我检查了这个政策 - 现在多次 - 并且新密码根据所有标准确定符合政策.如果我使用Windows机器设置密码它也可以正常工作(当然我之后更改了"oldpassword"和"newpassword",因为策略不允许我更改为更早的密码).我将"-W"选项传递给ldapmodify后输入的密码也是正确的,否则ldapmodify发出的错误是我使用的是无效凭证而不是约束违规.所以 - 我能想到的唯一原因确实是一个错误的格式化密码 - 但我无法弄清楚错误的格式应该来自哪里,因为我使用普通的base64 algorythm来编码密码.
有谁知道发生了什么?任何人都可以把我推向正确的方向吗?
非常感谢帮助,我提前感谢你.
编辑:让我烦恼的东西:当我通过base64运行基本编码字符串时,它一直告诉我"输入无效".现在 - 我继续与使用Linux机器上的base64的只是重新编码的密码 - 但是当我通过解码功能再次运行生成的字符串,BASE64不断告诉我"无效输入" ...琴弦不过稍显在windows-base64编码的字符串和linux编码的字符串之间进行了更改.但是无论我放在那里,base64只是说"无效输入".
Edit2:Nevermind - 读取我收集的函数的目的,因为密码中的点和感叹号,它会抛出此错误.
我这里有一个示例程序试图连接到安全端口上的LDAP服务器(ldaps://)但是,示例程序无法绑定到服务器.
#define LDAP_DEPRECATED 1
#include <stdio.h>
#include <ldap.h>
#define BIND_DN "dc=example,dc=com"
#define BIND_PW "secret"
int main() {
LDAP *ld;
int rc;
int reqcert = LDAP_OPT_X_TLS_NEVER;
int version = LDAP_VERSION3;
int ret(0);
if (ldap_initialize (&ld, "ldaps://192.168.1.51:10636")) {
perror("ldap_init"); /* no error here */
return(1);
}
ldap_set_option (ld, LDAP_OPT_PROTOCOL_VERSION, &version);
ldap_set_option (ld, LDAP_OPT_X_TLS_REQUIRE_CERT, &reqcert);
rc = ldap_bind_s(ld, BIND_DN, BIND_PW, LDAP_AUTH_SIMPLE);
if( rc != LDAP_SUCCESS )
{
fprintf(stderr, "ldap_simple_bind_s: %s\n", ldap_err2string(rc) );
return( 1 );
}
printf("Initial Authentication successful\n");
ldap_unbind(ld);
}
Run Code Online (Sandbox Code Playgroud)
但是,使用START_TLS,示例程序成功绑定到在端口10389上运行的LDAP服务器.ldapsearch客户端能够连接到服务器并搜索用户基础树.但上面的示例程序没有.
要使其与START_TLS一起使用:以下是我添加的内容: …
如何在OpenLdap 中的objectClass groupOfUniqueNames中搜索uniqueMember?
dn: cn=group,dc=example,dc=com
objectclass: groupOfUniqueNames
cn: group
uniquemember: uid=member1
uniquemember: uid=member2
Run Code Online (Sandbox Code Playgroud)
我试过以下没有结果:
ldapsearch -x -b dc = example,dc = com"(uniqueMember = uid = member1)"
请帮助我.
我试图重命名我的OpenLDAP的baseDN
从:
DC = ABC,DC = com的
至:
DC = XYZ,DC = EDU
我确实修改了一些conf文件:
/etc/ldap/slapd.d/cn\=config/olcDatabase={1}hdb.ldif
/etc/ldapscripts/ldapscripts.conf
和phpLDAPadmin的配置:
到新的根dn
但是在我重新启动slapd和lighttpd服务之后,即使我可以登录到phpLDAPAdmin(admin binddn)的管理界面,但我无法做任何事情.
我也尝试运行一些ldap命令行,但它不起作用.
还有什么我需要做的?或者我的方法有什么问题?
我想在Docker容器上安装LDAP服务器,我已经使用了dinkel / openldap,osixia / openldap和muzili / ldap docker映像,到目前为止,连接和第一个配置都可以。
我的问题是:尽管我挂载了容器的/ var / lib / ldap和/ etc / ldap,但是在停止,终止或删除ldap容器(安全删除,没有-v的docker rm)之前总是需要备份,否则会有数据失利。而且它似乎并没有遍历所有配置文件,因为它在开始时也需要导入数据。
我认为我可能会遇到docker容器及其卷安装的问题,但其他所有容器安装都成功了,而ldap容器似乎只有问题。
有什么解决方案可以使它正常工作吗?(在启动时通过从装入的文件夹中读取而不丢失数据进行配置?)
我在一家拥有多个面向公众的网站的公司工作。
其中一些站点是使用第三方产品(Moveable Type、myBB、Trac 等)构建的。我们还有几个基于 Microsoft 堆栈构建的定制站点。
目前,我们没有统一的认证/授权解决方案;每个站点都实现自己的用户存储。
我热衷于在所有站点上实施统一的用户身份验证。我不希望实现单点登录(如果在切换站点时提示用户输入凭据,这不会很糟糕),但我确实需要每个用户都有一个用户名和密码。
在我看来,最可能的解决方案是实现 LDAP 服务器。我们使用的一些第三方产品支持 LDAP,我可以修改我们的定制站点以使用 LDAP。
但是,我从未使用过 LDAP 存储来管理外部用户(我一直在构建自己的用户存储)。
使用 LDAP 的优缺点是什么?我是否忽略了其他选择?
谢谢
沙
authentication forms-authentication ldap active-directory openldap
我一直在尝试在 OpenLDAP 设置中启用日志记录(在 Oracle Enterprise Linux 6.5 中),但 /var/log/slapd/slapd.log 中没有生成日志。
请按照以下步骤启用日志记录:
# grep -i 日志级别 /etc/openldap/slapd.conf
日志级别-1
-rw-------- 1 root root 217 五月 21 19:48 slapd.log
# grep -i local4 /etc/rsyslog.conf
本地4。 /var/log/slapd/slapd.log *
# 服务 rsyslog 重新启动
# 服务 slapd 重新启动
但即使执行了这些步骤,我们也没有看到 slapd.log 文件中捕获的日志。唯一看到的日志是以下行:
更多 /var/log/slapd/slapd.log
5 月 21 日 19:48:12 sprdneval slapd[2961]: @(#) $OpenLDAP: slapd 2.4.39 (2014 年 8 …
我尝试创建一些代码将数据推送到 Active Directory 中。顺便说一句,我正在使用 Zend Framerowk 2,对于目录服务,我正在使用 Active Directory。我尝试创建一些将数据添加到 Active Directory 的函数,但遇到了问题。总是显示错误信息
错误信息
0x35(服务器不愿意执行;0000209A:SvcErr:DSID-031A1081,问题5003(WILL_NOT_PERFORM)
这是我的代码
$ldap = new Ldap($ldap_config);
$ldap->bind();
//add member user into role
$entry = array();
Attribute::setAttribute($entry, 'objectclass', 'top');
Attribute::setAttribute($entry, 'objectclass', 'person');
Attribute::setAttribute($entry, 'objectclass', 'organizationalPerson');
Attribute::setAttribute($entry, 'objectclass', 'user');
Attribute::setAttribute($entry, 'cn', '123ABCD');
Attribute::setAttribute($entry, 'distinguishedname', "CN=123ABCD,OU=Staff,DC=project,DC=company,DC=go,DC=id");
Attribute::setAttribute($entry, 'dn', "CN=123ABCD,OU=Staff,DC=project,DC=company,DC=go,DC=id");
Attribute::setAttribute($entry, 'instancetype', 4);
Attribute::setAttribute($entry, 'displayName', "FebryFairuz");
Attribute::setAttribute($entry, 'sAMAccountName', "123ABCD");
Attribute::setAttribute($entry, 'employeeID', "123ABCD");
Attribute::setAttribute($entry, 'givenName', "Febry");
Attribute::setAttribute($entry, 'mail', "febryfairuz@hotmail.com");
Attribute::setAttribute($entry, 'memberOf', "CN=Default,OU=Role,DC=project,DC=company,DC=go,DC=id");
$result_update = $ldap->add("CN=123ABCD,OU=Staff,DC=project,DC=company,DC=go,DC=id", $entry);
var_dump($result_update);
Run Code Online (Sandbox Code Playgroud)
如果我删除Attribute::setAttribute($entry, 'memberOf', "CN=Default,OU=Role,DC=project,DC=company,DC=go,DC=id");它运行良好并且也插入到 …
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) 我一直在使用 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) 递增的值大小来说最有效,否则可能会因溢出页面而导致碎片。
我的主要问题是: