prometheus / prometheus/common
Empty auth-scheme support
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 295
- Forks
- 367
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 18
Description
What did you do?
I want to scrape target secured via Authorization header, curl example:
curl -H "Authorization: $token" ...
Per docs i should be able to not use Bearer
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config
authorization:
# Sets the authentication type of the request.
[ type: <string> | default: Bearer ]
So i've set:
authorization:
type: ''
But in tcpdump i still see that Bearer prefix is added before token.
Validation code:
https://github.com/prometheus/common/blob/f57586dab602b7ae2607c552438a23a551f38773/config/http_config.go#L232
What did you expect to see?
I expect to being able to choose any auth-scheme, including nil one.
What did you see instead? Under which circumstances?
I see that Bearer auth-scheme is forced, i.e.:
curl -H "Authorization: Bearer $token" ...
instead of:
curl -H "Authorization: $token" ...
Environment
- Prometheus version:
prometheus, version 2.31.1 (branch: HEAD, revision: 411021ada9ab41095923b8d2df9365b632fd40c3)
build user: root@9419c9c2d4e0
build date: 20211105-20:35:02
go version: go1.17.3
platform: linux/amd64
- Prometheus configuration file:
scrape_configs:
- job_name: "auth"
authorization:
type: ''
credentials: SECRET_TOKEN
static_configs:
- targets:
- a.b.c:443
This could be fixed by verifying that type is explicitly set to empty string before callingTrimSpace. I can send PR if such a solution is fine.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in config/http_config.go at the validation code linked in the issue, then reproduce the scrape configuration with an explicitly empty authorization type and credentials. Verify the generated Authorization header against the expected curl form, ensuring an empty scheme does not add the default Bearer prefix.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- authentication
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100