【问题标题】:Spring LdapContextSource different Domain ControllersSpring LdapContextSource 不同的域控制器
【发布时间】:2016-11-04 10:37:58
【问题描述】:

我配置了多个域控制器,想修改所有域中用户的用户属性。

我的配置如下所示:

<bean id="writeLdapContextSource"
    class="org.springframework.ldap.core.support.LdapContextSource">
    <property name="url" value="ldap://123.12.123.3:389" />
    <property name="base" value="" />
    <property name="userDn" value="domainx\userabc" />
    <property name="password" value="secret124" />
    <property name="pooled" value="false"/>
    <property name="referral" value="follow"/>
</bean>

我可以成功修改本地域内的用户。没问题。

但如果我尝试修改不同域中的用户,我会收到一条错误消息。

注意: ldap 服务用户“domainx\userabc”具有在所有域中进行修改的正确授权。

例子:

1.) 修改另一个域中用户的属性

原因:javax.naming.OperationNotSupportedException: [LDAP: error code 53 - 00000057: LdapErr: DSID-0C04214C, comment: Error in attribute conversion operation, data 0, v1db1

2.) 将配置更改为使用端口 3268 而不是 389

原因:javax.naming.OperationNotSupportedException: [LDAP: error code 53 - 00002035: LdapErr: DSID-0C090B45, comment: Operation not allowed through GC port, data 0, v1db1

注意:我可以修改本地域中的用户属性。所以我的修改代码是正确的。

片段:

DirContextOperations context = writeLdapTemplate.lookupContext(ldapUser.getDistinguishedName());
context.addAttributeValue(attributeName, attributeValue);
writeLdapTemplate.modifyAttributes(context);

这非常适合本地域用户。

有人知道如何修改其他域中的用户吗?

我还使用 LDAP 浏览器检查了用户,他能够看到所有域...

【问题讨论】:

    标签: java spring active-directory ldap


    【解决方案1】:

    全局目录(端口 3268)提供林中所有条目的只读“快照”。要对条目执行写入操作,您需要在端口 389 上绑定到其各自的域。

    您可以使用全局目录查询所有可用域,然后为每个域动态创建 LdapTemplates 并使用它们来执行您的修改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多