Support basic auth for backend requests, #1048

This commit is contained in:
Alexander Zobnin
2020-10-06 17:22:34 +03:00
parent 03ceeb293c
commit d2e9c2bfd0

View File

@@ -3,6 +3,7 @@ package httpclient
import ( import (
"crypto/tls" "crypto/tls"
"crypto/x509" "crypto/x509"
"encoding/base64"
"errors" "errors"
"fmt" "fmt"
"net" "net"
@@ -87,6 +88,13 @@ func getHttpTransport(ds *backend.DataSourceInstanceSettings) (*dataSourceTransp
IdleConnTimeout: 90 * time.Second, IdleConnTimeout: 90 * time.Second,
} }
if ds.BasicAuthEnabled {
user := ds.BasicAuthUser
password := ds.DecryptedSecureJSONData["basicAuthPassword"]
basicAuthHeader := getBasicAuthHeader(user, password)
customHeaders["Authorization"] = basicAuthHeader
}
dsTransport := &dataSourceTransport{ dsTransport := &dataSourceTransport{
headers: customHeaders, headers: customHeaders,
transport: transport, transport: transport,
@@ -169,3 +177,9 @@ func getCustomHeaders(ds *backend.DataSourceInstanceSettings) map[string]string
return headers return headers
} }
// getBasicAuthHeader returns a base64 encoded string from user and password.
func getBasicAuthHeader(user string, password string) string {
var userAndPass = user + ":" + password
return "Basic " + base64.StdEncoding.EncodeToString([]byte(userAndPass))
}