Atlassian Confluence 插件之间的通信/认证

3
我正在开发一个宏插件,它基于现有插件通过其REST API提供的数据进行构建。它们将在Confluence 5.9的同一实例上运行。
由于现有插件的Java API仅提供对非常有限数量的类的访问,因此我决定使用Rest。
鉴于用户已经通过Confluence进行了身份验证,是否有任何方法可以从我的插件Java Rest客户端向其他客户端传递我的当前用户凭据,最好不要使用基本身份验证?
到目前为止,我尝试过:
  1. 共享访问层 - 这似乎曾经可以使用方法 Request#addTrustedTokenAuthentication(),但在 SAL 3.0.5 中已被弃用,请参见SAL文档(过时?)SAL版本矩阵

  2. 应用程序链接 - 可以让我链接到另一个应用程序,但显然无法链接回同一 Confluence 实例。

  3. SAL TrustedRequestFactory - 在Atlassian答案上的评论表明可能有一种方法可以使用它,但我似乎还没有想出来。

  4. 我也尝试阅读 Atlassian 文档,并在 Atlassian 答案 这里 上发布了类似的问题。我不是要重复发布,但不幸的是,在该平台上查看其他问题时,很少能够及时得到答复,所以我想在这里试试运气。

1个回答

3

看起来这不是一个很常见的问题,但我想我会发表我们最终是如何解决这个问题的,以防再次需要:

@Component
public class RestClient {

    @ComponentImport
    private TrustedTokenFactory tokenFactory;

    // [...]
    public String doRequest(HttpClient client, String url) throws Exception {
        TrustedTokenAuthenticator auth = 
           new TrustedTokenAuthenticator(tokenFactory);
        HttpMethod method = auth.makeMethod(client, url);
        try {
             // add request headers, etc... 
             int statusCode = client.executeMethod(method);   
             // be sure to use response data here, catch exceptions...   
        } finally {
             method.releaseConnection();
        }
    }
}

在编程中也可以使用cookies,但在我们的情况下这并不是一个很好的选择。 - andante

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接