diff --git a/provider/http.go b/provider/http.go index fe10d16db..decba6a86 100644 --- a/provider/http.go +++ b/provider/http.go @@ -136,6 +136,8 @@ func (p *HTTP) WithAuth(typ, user, password string) (*HTTP, error) { log.Redact(basicAuth) p.Client.Transport = transport.BasicAuth(user, password, p.Client.Transport) + case "bearer": + p.Client.Transport = transport.BearerAuth(password, p.Client.Transport) case "digest": p.Client.Transport = digest.NewTransport(user, password, p.Client.Transport) default: diff --git a/util/transport/bearer.go b/util/transport/bearer.go new file mode 100644 index 000000000..51e370fa5 --- /dev/null +++ b/util/transport/bearer.go @@ -0,0 +1,15 @@ +package transport + +import ( + "net/http" +) + +// BearerAuth creates an HTTP transport performing HTTP authorization using an OAuth 2.0 Bearer Token +func BearerAuth(token string, base http.RoundTripper) http.RoundTripper { + return &Decorator{ + Decorator: DecorateHeaders(map[string]string{ + "Authorization": "Bearer " + token, + }), + Base: base, + } +}