@@ -50,20 +50,35 @@ func getMiddleware(settings types.BigQuerySettings, routePath string) (httpclien
50
50
var provider tokenprovider.TokenProvider
51
51
switch settings .AuthenticationType {
52
52
case "gce" :
53
- provider = tokenprovider .NewGceAccessTokenProvider (providerConfig )
53
+ if settings .UsingImpersonation {
54
+ providerConfig .TargetPrincipal = settings .ServiceAccountToImpersonate
55
+ provider = tokenprovider .NewImpersonatedGceAccessTokenProvider (providerConfig )
56
+ } else {
57
+ provider = tokenprovider .NewGceAccessTokenProvider (providerConfig )
58
+ }
59
+
54
60
case "jwt" :
55
61
err := validateDataSourceSettings (settings )
56
62
57
63
if err != nil {
58
64
return nil , err
59
65
}
60
-
61
- providerConfig .JwtTokenConfig = & tokenprovider.JwtTokenConfig {
62
- Email : settings .ClientEmail ,
63
- URI : settings .TokenUri ,
64
- PrivateKey : []byte (settings .PrivateKey ),
66
+ if settings .UsingImpersonation {
67
+ providerConfig .TargetPrincipal = settings .ServiceAccountToImpersonate
68
+ providerConfig .JwtTokenConfig = & tokenprovider.JwtTokenConfig {
69
+ Email : settings .ClientEmail ,
70
+ URI : settings .TokenUri ,
71
+ PrivateKey : []byte (settings .PrivateKey ),
72
+ }
73
+ provider = tokenprovider .NewImpersonatedJwtAccessTokenProvider (providerConfig )
74
+ } else {
75
+ providerConfig .JwtTokenConfig = & tokenprovider.JwtTokenConfig {
76
+ Email : settings .ClientEmail ,
77
+ URI : settings .TokenUri ,
78
+ PrivateKey : []byte (settings .PrivateKey ),
79
+ }
80
+ provider = tokenprovider .NewJwtAccessTokenProvider (providerConfig )
65
81
}
66
- provider = tokenprovider .NewJwtAccessTokenProvider (providerConfig )
67
82
}
68
83
69
84
return tokenprovider .AuthMiddleware (provider ), nil
0 commit comments