提问者:小点点

艾特莱森Confluence插件之间的通信/身份验证


我正在开发一个宏插件,它建立在现有插件通过其RESTAPI提供的数据之上。它们将运行在相同的Confluence实例上,版本5.9。

我不能使用插件的JavaAPI,因为它只提供对非常有限数量的类的访问,所以我决定使用Rest。

鉴于用户已经通过Confluence进行了身份验证,有没有办法将我当前的用户凭据从我的插件JavaRest客户端传送到另一个,最好不要使用基本身份验证?

到目前为止,我已经尝试了:

>

  • 共享访问层-这显然用于方法Request#addTrustedTokenAuthentication(),但在SAL3.0.5中已弃用,请参阅SAL文档(过时?)和SAL版本矩阵

    ApplicationLink-允许我链接到另一个应用程序,但显然不可能链接回同一个Confluence实例

    SALTrustedRequest estFactory-对这个atlassian答案的注释表明可能有一种方法可以使用它,但我似乎还没有弄清楚。

    我也试过在Atlassian留档上阅读,并在这里发布了一个类似的问题。我不想重复发布,但不幸的是,在那个平台上查看其他问题,似乎很少有人及时得到回答,所以我想在这里试试运气。


  • 共1个答案

    匿名用户

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

    @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();
            }
        }
    }