From e7a69671b3a9242e2412e030e8660af4a194f56c Mon Sep 17 00:00:00 2001 From: spencergibb Date: Mon, 29 Mar 2021 18:05:38 -0400 Subject: [PATCH] Adds support for token auth via username property. Fixes gh-1602 --- .../server/support/GitCredentialsProviderFactory.java | 8 ++++++++ .../GitCredentialsProviderFactoryTests.java | 10 +++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/GitCredentialsProviderFactory.java b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/GitCredentialsProviderFactory.java index 4a9d3dc9..6ef365bb 100644 --- a/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/GitCredentialsProviderFactory.java +++ b/spring-cloud-config-server/src/main/java/org/springframework/cloud/config/server/support/GitCredentialsProviderFactory.java @@ -96,6 +96,14 @@ public class GitCredentialsProviderFactory { provider = new UsernamePasswordCredentialsProvider(username, password.toCharArray()); } + else if (hasText(username) && !hasText(passphrase)) { + // useful for token based login gh-1602 + // see + // https://stackoverflow.com/questions/28073266/how-to-use-jgit-to-push-changes-to-remote-with-oauth-access-token + this.logger.debug( + "Constructing UsernamePasswordCredentialsProvider for URI " + uri); + provider = new UsernamePasswordCredentialsProvider(username, (String) null); + } else if (hasText(passphrase)) { this.logger .debug("Constructing PassphraseCredentialsProvider for URI " + uri); diff --git a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/credentials/GitCredentialsProviderFactoryTests.java b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/credentials/GitCredentialsProviderFactoryTests.java index b0794e56..d61b0e2b 100644 --- a/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/credentials/GitCredentialsProviderFactoryTests.java +++ b/spring-cloud-config-server/src/test/java/org/springframework/cloud/config/server/credentials/GitCredentialsProviderFactoryTests.java @@ -61,13 +61,21 @@ public class GitCredentialsProviderFactoryTests { } @Test - public void testCreateForFileWithUsername() { + public void testCreateForFileWithUsernameAndPassword() { CredentialsProvider provider = this.factory.createFor(FILE_REPO, USER, PASSWORD, null, false); assertThat(provider).isNotNull(); assertThat(provider instanceof UsernamePasswordCredentialsProvider).isTrue(); } + @Test + public void testCreateForServerWithUsernameAndNoPassword() { + CredentialsProvider provider = this.factory.createFor(HTTPS_GIT_REPO, USER, "", + null, false); + assertThat(provider).isNotNull(); + assertThat(provider instanceof UsernamePasswordCredentialsProvider).isTrue(); + } + @Test public void testCreateForServerNoUsernameIsNull() { CredentialsProvider provider = this.factory.createFor(HTTPS_GIT_REPO, null, null,