diff --git a/git-https-proxy/tokenstore/main.go b/git-https-proxy/tokenstore/main.go index 674b3074..29127de8 100644 --- a/git-https-proxy/tokenstore/main.go +++ b/git-https-proxy/tokenstore/main.go @@ -89,7 +89,8 @@ func (s *TokenStore) GetGitAccessToken(provider string, encode bool) (string, er s.gitAccessTokensLock.RLock() defer s.gitAccessTokensLock.RUnlock() if encode { - return encodeGitCredentials(s.gitAccessTokens[provider].AccessToken), nil + gitUser := getGitUser(provider) + return encodeGitCredentials(gitUser, s.gitAccessTokens[provider].AccessToken), nil } return s.gitAccessTokens[provider].AccessToken, nil } @@ -228,6 +229,13 @@ func (s *TokenStore) periodicTokenRefresh() { } } -func encodeGitCredentials(token string) string { - return base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("oauth2:%s", token))) +func encodeGitCredentials(user string, token string) string { + return base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s:%s", user, token))) +} + +func getGitUser(provider string) string { + if provider == "bitbucket.org" { + return "x-token-auth" + } + return "oauth2" } diff --git a/git_services/git_services/init/cloner.py b/git_services/git_services/init/cloner.py index 8752d5f1..19eba2d0 100644 --- a/git_services/git_services/init/cloner.py +++ b/git_services/git_services/init/cloner.py @@ -270,6 +270,8 @@ def run_helper(self, repository: Repository, *, storage_mounts: list[str]): # TODO: Is this something else for non-GitLab providers? git_user = "oauth2" + if repository.provider == "bitbucket.org": + git_user = "x-token-auth" git_access_token = ( self._get_access_token(repository.provider) if repository.provider else None )