我可以通过REST, SOAP或XML-RPC调用synchroniseUserDirectories (Conflue



我正在使用Confluence 4.2.5 (build 3284)与CAS SSO连接到我的LDAP服务器,并希望能够在用户更改密码时从LDAP服务器调用synchroniseUserDirectories(),以便更改是瞬时的。

它现在的工作方式是,用户必须等待Confluence运行它的周期性LDAP同步,这可能会让他们感到不安。

我已经尝试使用XML-RPC接口调用changeUserPassword()(作为管理员),但它不起作用。该操作将引发异常"更改用户密码错误…"。我推测这是因为用户是在LDAP中定义的,但我不能确定,因为异常消息没有明确说明原因。

这里是示例代码,我希望能够使用。它不工作。

#!/usr/bin/env python
import xmlrpclib
url = 'https://docs.example.com'
admin_user = 'frobisher'
admin_pass = 'supersecretstuff'
username = 'bigbob'
new_password = 'bigbobsbigsecret'
server = xmlrpclib.ServerProxy(url + '/rpc/xmlrpc')
token = server.confluence2.login(admin_user, admin_pass)
# CITATION: https://developer.atlassian.com/display/CONFDEV/Remote+Confluence+Methods
# this doesn't exist but would be my preferred approach. 
# It raises a NoSuchMethodException exception.
server.confluence2.synchroniseUserDirectories(token)
# this throws a general exception, because of the LDAP? The message
# wasn't clear about the source of the problem.
#server.confluence2.changeUserPassword(token,
#                                      username,
#                                      password)
server.confluence2.logout(token)

是否有任何方法使用SOAP或REST来做到这一点?我很关心REST,因为它听起来仍然是一个原型。

如果这些方法都不起作用,它可以用一个简单的插件来完成,考虑到这必须是从LDAP服务器到Confluence服务器的推送操作?我没有编写插件的经验,但我偶尔做一些java工作。

简短的回答是"不"。在Confluence中,同步远程用户目录的能力没有作为远程操作公开。

长答案是"是的",你可以写一个插件来做这件事。如果您已经熟悉java,那么最好的答案可能是向您展示我编写的一些执行类似功能的源代码:https://bitbucket.org/jaysee00/confluence-user-sync-api这个插件为您提供SOAP、XML-RPC和JSON-RPC方法,以强制从远程目录将单个用户帐户同步到Confluence。

这可能符合你的目的,但我想这将是可能的编辑这个插件的源代码,并改变它同步整个目录。

最新更新