我(在此开始)开发一个宏插件,它基于现有插件通过其REST API提供的数据。它们将在Confluence的同一个实例上运行,版本为5.9。
我不能使用插件的Java API,因为它只提供对非常有限数量的类的访问,所以我决定使用Rest。
鉴于用户已经使用Confluence进行了身份验证,有没有办法将我当前的用户凭据从我的插件Java Rest客户端传递给另一个,最好不使用基本身份验证?
到目前为止,我已经尝试过:
Request#addTrustedTokenAuthentication()
但在SAL 3.0.5中已弃用,请参阅SAL Documentation (outdated?)和SAL Version MatrixTrustedRequestFactory
-对这个atlassian answer的评论表明可能有一种方法使用它,但我似乎无法弄明白(还)。似乎这不是一个非常普遍的问题,但我想我会发布我们最终如何解决这个问题,以防万一它再次需要:
@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();
}
}
}