Git over HTTPS rejects OAuth token unless username is 'oauth2'
Following https://docs.gitlab.com/ee/api/oauth2.html I generated an OAuth token with scope read_repository and write_repository
According to https://docs.gitlab.com/ee/integration/oauth_provider.html#authorized-applications this token should work for "read-write access to repositories on private projects using Git-over-HTTP"
However when I try git push with my username and the token as password, I get authentication error
$ git push
Username for 'https://gitlab.com': hickford
Password for 'https://hickford@gitlab.com': [token]
remote: HTTP Basic: Access denied
fatal: Authentication failed for 'https://gitlab.com/coldnight/ci-test.git/'
Any ideas?
I tested a Personal access tokens with the same scope and it worked as expected.
OAuth token info from https://gitlab.com/oauth/token/info
{
"resource_owner_id": 7962572,
"scope": [
"read_repository",
"write_repository",
"read_user"
],
"expires_in": 6840,
"application": {
"uid": "d8a14250a4d1beacaad67dd6fabaab1e0408b581ca73ae4a76cc7170d3f8afd1"
},
"created_at": 1640989638,
"scopes": [
"read_repository",
"write_repository",
"read_user"
],
"expires_in_seconds": 6840
}
Update: You must specify magic username oauth2. This is now documented at https://docs.gitlab.com/ee/api/oauth2.html#access-git-over-https-with-access-token
It would be an improvement to also accept the user's username (or ignore the username field entirely).