From 8d4c32052acb9670e7063f8a69daa813b64e7d9e Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Tue, 2 Sep 2014 15:58:32 +0400 Subject: [PATCH] IDEA-128824 Use cookie authentication only for JIRA on-Demand --- .../com/intellij/tasks/jira/JiraRepository.java | 9 +++++++-- .../tasks/integration/JiraIntegrationTest.java | 17 +++++++++-------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/plugins/tasks/tasks-core/jira/src/com/intellij/tasks/jira/JiraRepository.java b/plugins/tasks/tasks-core/jira/src/com/intellij/tasks/jira/JiraRepository.java index 1c51ea789ca1..fa80fb161188 100644 --- a/plugins/tasks/tasks-core/jira/src/com/intellij/tasks/jira/JiraRepository.java +++ b/plugins/tasks/tasks-core/jira/src/com/intellij/tasks/jira/JiraRepository.java @@ -227,12 +227,17 @@ public class JiraRepository extends BaseRepositoryImpl { HttpClient client = getHttpClient(); // Fix for https://jetbrains.zendesk.com/agent/#/tickets/24566 // See https://confluence.atlassian.com/display/ONDEMANDKB/Getting+randomly+logged+out+of+OnDemand for details - if (BASIC_AUTH_ONLY) { + // IDEA-128824, IDEA-128706 Use cookie authentication only for JIRA on-Demand + // TODO Make JiraVersion more suitable for such checks + final boolean isJiraOnDemand = StringUtil.notNullize(myJiraVersion).contains("OD"); + if (isJiraOnDemand) { + LOG.info("Connecting to JIRA on-Demand. Cookie authentication is enabled unless 'tasks.jira.basic.auth.only' VM flag is used."); + } + if (BASIC_AUTH_ONLY || !isJiraOnDemand) { // to override persisted settings setUseHttpAuthentication(true); } else { - // disable subsequent basic authorization attempts if user already was authenticated boolean enableBasicAuthentication = !(isRestApiSupported() && containsCookie(client, AUTH_COOKIE_NAME)); if (enableBasicAuthentication != isUseHttpAuthentication()) { LOG.info("Basic authentication for subsequent requests was " + (enableBasicAuthentication ? "enabled" : "disabled")); diff --git a/plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/JiraIntegrationTest.java b/plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/JiraIntegrationTest.java index a849adb09c40..a3d99c33228c 100644 --- a/plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/JiraIntegrationTest.java +++ b/plugins/tasks/tasks-tests/test/com/intellij/tasks/integration/JiraIntegrationTest.java @@ -119,14 +119,15 @@ public class JiraIntegrationTest extends TaskManagerTestCase { } } - public void testBasicAuthenticationDisabling() throws Exception { - assertTrue("Basic authentication should be enabled at first", myRepository.isUseHttpAuthentication()); - myRepository.findTask("PRJONE-1"); - assertFalse("Basic authentication should be disabled once JSESSIONID cookie was received", myRepository.isUseHttpAuthentication()); - HttpClient client = myRepository.getHttpClient(); - assertFalse(client.getParams().isAuthenticationPreemptive()); - assertNull(client.getState().getCredentials(AuthScope.ANY)); - } + // TODO move to on-Demand-specific tests + //public void testBasicAuthenticationDisabling() throws Exception { + // assertTrue("Basic authentication should be enabled at first", myRepository.isUseHttpAuthentication()); + // myRepository.findTask("PRJONE-1"); + // assertFalse("Basic authentication should be disabled once JSESSIONID cookie was received", myRepository.isUseHttpAuthentication()); + // HttpClient client = myRepository.getHttpClient(); + // assertFalse(client.getParams().isAuthenticationPreemptive()); + // assertNull(client.getState().getCredentials(AuthScope.ANY)); + //} public void testSetTaskState() throws Exception { changeStateAndCheck(JIRA_4_TEST_SERVER_URL, "PRJONE-8");