2016-07-05 2 views
0

Я (новичок в этом) разрабатывает плагин с макросами, который основывается на данных, которые предоставляет существующий плагин через его REST api. Они будут работать на одном экземпляре Confluence, версия 5.9.Atlassian Confluence связь/аутентификация между плагинами

Я не могу использовать Java api плагина, поскольку он обеспечивает доступ только к очень ограниченному количеству классов, поэтому я решил использовать Rest.

Учитывая, что пользователь уже прошел аутентификацию с помощью Confluence, есть ли способ передать мои текущие учетные данные пользователя из моих подключаемых модулей Java Rest клиент другому, предпочтительно не используя базовую проверку подлинности?

До сих пор я пытался:

  1. Shared Access Layer - это, по-видимому используется для работы с методом Request#addTrustedTokenAuthentication(), но не рекомендуется в SAL 3.0.5, см SAL Documentation (outdated?) и SAL Version Matrix

  2. ApplicationLink - позволяет мне ссылаться на другое приложение, но, видимо, невозможно связать его с тем же экземпляром Confluence.

  3. SAL TrustedRequestFactory - комментарии к этому atlassian answer указывают, что может быть способ, используя это, но я не могу понять его (пока).

  4. Я также пробовал читать в atlassian документации и опубликовал аналогичный вопрос на atlassian ответы here. Я не хочу удваивать почту, но, к сожалению, глядя на другие вопросы на этой платформе, немногие, похоже, получают своевременный ответ, поэтому я подумал, что попробую удачу здесь.

Спасибо за внимание, буду благодарен вам за помощь.

ответ

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

Можно также использовать куки, но это был не очень хороший выбор в нашем случае – andante