0

LDAP サーバーに接続された CAS SSO で Confluence 4.2.5 (ビルド 3284) を使用しており、ユーザーがパスワードを変更したときに 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 の作業をしています。

どんなヒントでも大歓迎です。

4

1 に答える 1

0

短い答えは「いいえ」です。リモート ユーザー ディレクトリを同期する機能は、Confluence のリモート操作として公開されていません。

長い答えは「はい」です。これを行うプラグインを作成できます。すでに Java に精通している場合、おそらく最良の答えは、同様の機能を実行する私が作成したソース コードを示すことです: https://bitbucket.org/jaysee00/confluence-user-sync-api このプラグインは、SOAP、XML-RPC、および JSON-RPC メソッドを提供して、個々のユーザー アカウントを強制的にリモート ディレクトリから Confluence に同期させます。

それはそのまま目的に合うかもしれませんが、このプラグインのソースを編集して、ディレクトリ全体を同期するように変更することも可能だと思います。

于 2013-05-17T07:01:56.057 に答える