标签: openldap

通过ldapmodify在AD中更改密码时发生LDAP约束违规

我目前尝试通过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 active-directory openldap adldap

6
推荐指数
1
解决办法
3万
查看次数

无法通过SSL将示例程序绑定到LDAP服务器(ldaps://)

我这里有一个示例程序试图连接到安全端口上的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一起使用:以下是我添加的内容: …

c c++ linux ldap openldap

6
推荐指数
1
解决办法
4559
查看次数

ldap查询:uniqueMember的ldapsearch

如何在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)"

请帮助我.

ldap openldap ldap-query

6
推荐指数
1
解决办法
2万
查看次数

在OpenLDAP中更改BaseDN

我试图重命名我的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的配置:

  • config.php文件

到新的根dn

但是在我重新启动slapdlighttpd服务之后,即使我可以登录到phpLDAPAdmin(admin binddn)的管理界面,但我无法做任何事情.

我也尝试运行一些ldap命令行,但它不起作用.

还有什么我需要做的?或者我的方法有什么问题?

debian rename openldap

6
推荐指数
1
解决办法
2万
查看次数

如何在启动时加载LDAP Docker容器数据

我想在Docker容器上安装LDAP服务器,我已经使用了dinkel / openldaposixia / openldapmuzili / ldap docker映像,到目前为止,连接和第一个配置都可以。

我的问题是:尽管我挂载了容器的/ var / lib / ldap和/ etc / ldap,但是在停止,终止或删除ldap容器(安全删除,没有-v的docker rm)之前总是需要备份,否则会有数据失利。而且它似乎并没有遍历所有配置文件,因为它在开始时也需要导入数据。

我认为我可能会遇到docker容器及其卷安装的问题,但其他所有容器安装都成功了,而ldap容器似乎只有问题。

有什么解决方案可以使它正常工作吗?(在启动时通过从装入的文件夹中读取而不丢失数据进行配置?)

config ldap openldap docker

6
推荐指数
1
解决办法
6396
查看次数

对外部用户使用 LDAP 的利弊

我在一家拥有多个面向公众的网站的公司工作。

其中一些站点是使用第三方产品(Moveable Type、myBB、Trac 等)构建的。我们还有几个基于 Microsoft 堆栈构建的定制站点。

目前,我们没有统一的认证/授权解决方案;每个站点都实现自己的用户存储。

我热衷于在所有站点上实施统一的用户身份验证。我不希望实现单点登录(如果在切换站点时提示用户输入凭据,这不会很糟糕),但我确实需要每个用户都有一个用户名和密码。

在我看来,最可能的解决方案是实现 LDAP 服务器。我们使用的一些第三方产品支持 LDAP,我可以修改我们的定制站点以使用 LDAP。

但是,我从未使用过 LDAP 存储来管理外部用户(我一直在构建自己的用户存储)。

使用 LDAP 的优缺点是什么?我是否忽略了其他选择?

谢谢

authentication forms-authentication ldap active-directory openldap

5
推荐指数
1
解决办法
9478
查看次数

Openldap 日志未生成

我一直在尝试在 OpenLDAP 设置中启用日志记录(在 Oracle Enterprise Linux 6.5 中),但 /var/log/slapd/slapd.log 中没有生成日志。

请按照以下步骤启用日志记录:

  1. 编辑 slapd.conf 文件:

# grep -i 日志级别 /etc/openldap/slapd.conf

日志级别-1

  1. 是否在 /var/log/slapd 中设置了日志目录 # cd /var/log/slapd ; ls-ltr

-rw-------- 1 root root 217 五月 21 19:48 slapd.log

  1. 编辑 rsyslog 配置文件

# grep -i local4 /etc/rsyslog.conf

本地4。 /var/log/slapd/slapd.log *

  1. 重新启动 openldap 服务以及 rsyslogger :

# 服务 rsyslog 重新启动

# 服务 slapd 重新启动

但即使执行了这些步骤,我们也没有看到 slapd.log 文件中捕获的日志。唯一看到的日志是以下行:

更多 /var/log/slapd/slapd.log

5 月 21 日 19:48:12 sprdneval slapd[2961]: @(#) $OpenLDAP: slapd 2.4.39 (2014 年 8 …

linux logging openldap

5
推荐指数
1
解决办法
4万
查看次数

如何使用 ZF2 在 ldap Active Directory(AD) 中添加属性 member/memberOf

我尝试创建一些代码将数据推送到 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");它运行良好并且也插入到 …

php zend-framework ldap active-directory openldap

5
推荐指数
1
解决办法
5036
查看次数

如何使用php获取ldap树结构?

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)

php ldap active-directory openldap ldap-query

5
推荐指数
0
解决办法
1750
查看次数

LMDB:如何有效地存储大值

我一直在使用 LMDB 来存储键值对,其中值大小约为 200 字节。我遇到了值大小可能增长到 8KB 或更多的情况。

根据: https: //lmdb.readthedocs.io/en/release/#storage-efficiency-limitshttps://github.com/lmdbjava/benchmarks/blob/master/results/20160710/README.md,LMDB是对于以页面大小 (4096KB) 递增的值大小来说最有效,否则可能会因溢出页面而导致碎片。

我的主要问题是:

  1. 我是否需要将值分解为页面大小增量以获得最佳性能?
  2. LMDB 中按字典顺序排序的键是否放置在相邻页面中?假设我的值约为 14KB,我将其分解为 8K、4K 和 2K 块,键值为:key_chunk1、key_chunk_2、key_chunk_3,它们会在相邻页面中吗?假设最后一个块(2KB 值)位于新页面上,下一个按字典顺序排序的键为 4K,这是否会位于新页面中,因为它无法容纳在现有页面中?

openldap lmdb

5
推荐指数
0
解决办法
1194
查看次数