From 60617d0bf714aff4ecf75bc0d08581db50c78e4f Mon Sep 17 00:00:00 2001 From: Erik Sundell Date: Mon, 8 Oct 2018 13:49:27 +0200 Subject: [PATCH] stackdriver: wip - add logic for retrieving token from gce metadata server in the auth provider --- pkg/api/pluginproxy/ds_auth_provider.go | 22 +++++++++++----------- pkg/tsdb/stackdriver/stackdriver.go | 5 +++-- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/pkg/api/pluginproxy/ds_auth_provider.go b/pkg/api/pluginproxy/ds_auth_provider.go index 5a8bf5605dd..8c6646f42b5 100644 --- a/pkg/api/pluginproxy/ds_auth_provider.go +++ b/pkg/api/pluginproxy/ds_auth_provider.go @@ -55,24 +55,24 @@ func ApplyRoute(ctx context.Context, req *http.Request, proxyPath string, route } } - // if route.JwtTokenAuth != nil && len(ds.SecureJsonData["privateKey"]) != 0 { - // if token, err := tokenProvider.getJwtAccessToken(ctx, data); err != nil { - // logger.Error("Failed to get access token", "error", err) - // } else { - // req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", token)) - // } - // } + gceAutoAuthentication := ds.JsonData.Get("gceAutomaticAuthentication").MustBool() + if route.JwtTokenAuth != nil && !gceAutoAuthentication { + if token, err := tokenProvider.getJwtAccessToken(ctx, data); err != nil { + logger.Error("Failed to get access token", "error", err) + } else { + req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", token)) + } + } - if ds.Type == "stackdriver" { - defaultCredentials, err := google.FindDefaultCredentials(ctx, route.JwtTokenAuth.Scopes...) + if gceAutoAuthentication { + tokenSrc, err := google.DefaultTokenSource(ctx, route.JwtTokenAuth.Scopes...) if err != nil { logger.Error("Failed to get default credentials", "error", err) } else { - token, err := defaultCredentials.TokenSource.Token() + token, err := tokenSrc.Token() if err != nil { logger.Error("Failed to get default access token", "error", err) } else { - ds.JsonData.Set("defaultProject", defaultCredentials.ProjectID) req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", token.AccessToken)) } } diff --git a/pkg/tsdb/stackdriver/stackdriver.go b/pkg/tsdb/stackdriver/stackdriver.go index 87856e3f36c..dc7fbdc135e 100644 --- a/pkg/tsdb/stackdriver/stackdriver.go +++ b/pkg/tsdb/stackdriver/stackdriver.go @@ -521,8 +521,9 @@ func replaceWithMetricPart(metaPartName string, metricType string) []byte { func getProjectName(ctx context.Context, dsInfo *models.DataSource, route *plugins.AppPluginRoute) (string, error) { var projectName string - gceAutoAuthentication := dsInfo.JsonData.Get("gceAutoAuthentication").MustBool() - if gceAutoAuthentication { + gceAutomaticAuthentication := dsInfo.JsonData.Get("gceAutomaticAuthentication").MustBool() + logger.Info("gceAutomaticAuthentication", "gceAutomaticAuthentication", gceAutomaticAuthentication) + if gceAutomaticAuthentication { defaultCredentials, err := google.FindDefaultCredentials(ctx, route.JwtTokenAuth.Scopes...) if err != nil { return "", err