我可以通过REST,SOAP或XML-RPC调用synchroniseUserDirectories(ConfluenceRpc)吗?

时间:2013-04-27 00:50:41

标签: rest soap xml-rpc confluence

我正在使用Confluence 4.2.5(版本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工作。

任何提示都将不胜感激。

1 个答案:

答案 0 :(得分:0)

简短的回答是“不”。同步远程用户目录的功能不会在Confluence中作为远程操作公开。

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

这可能适合您的目的,但我想可以编辑此插件的来源并更改它以同步整个目录。