2016-11-04 25 views
0

我配置了多個域控制器,並且想要修改所有域內用戶的用戶屬性。Spring LdapContextSource不同的域控制器

我的配置是這樣的:

<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」具有在所有域中進行修改的正確授權。

實例:javax.naming.OperationNotSupportedException:

1)在另一域中

由導致了用戶的屬性的修改[LDAP:錯誤代碼53 - 00000057:LdapErr:DSID- 0C04214C,註釋:錯誤屬性轉換操作,數據0,v1db1

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

產生的原因:javax.naming.OperationNotSupportedException:LDAP:錯誤代碼53 - 00002035:LdapErr:DSID-0C090B45,註釋:操作未通過GC端口允許,數據0,v1db1

注:我'能夠修改本地域中的用戶屬性。所以我的修改代碼是正確的。

段:

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

這完全適用於本地域中的用戶。

任何人都有一個想法該怎麼做才能夠修改其他域中的用戶?

我還檢查與LDAP瀏覽器用戶自己也能看到所有域...

回答

0

全局編目(端口3268)提供了森林中的所有條目的只讀「快照」。要對條目執行寫操作,您需要將其綁定到端口389上的相應域。

您可以使用全局編錄查詢所有可用域,然後爲每個域動態創建LdapTemplates並使用它們執行你的修改。

相關問題