Skip to content

Commit 5b6b8be

Browse files
authored
fix(auth/impersonate): properly send default detect params (#9529)
Fixes: #9136
1 parent 2504e26 commit 5b6b8be

File tree

4 files changed

+57
-33
lines changed

4 files changed

+57
-33
lines changed

auth/impersonate/idtoken.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424
"time"
2525

2626
"cloud.google.com/go/auth"
27-
"cloud.google.com/go/auth/detect"
2827
"cloud.google.com/go/auth/httptransport"
2928
"cloud.google.com/go/auth/internal"
3029
)
@@ -88,9 +87,9 @@ func NewIDTokenProvider(opts *IDTokenOptions) (auth.TokenProvider, error) {
8887
if opts.Client == nil && opts.TokenProvider == nil {
8988
var err error
9089
client, err = httptransport.NewClient(&httptransport.Options{
91-
DetectOpts: &detect.Options{
92-
Audience: defaultAud,
93-
Scopes: []string{defaultScope},
90+
InternalOptions: &httptransport.InternalOptions{
91+
DefaultAudience: defaultAud,
92+
DefaultScopes: []string{defaultScope},
9493
},
9594
})
9695
if err != nil {

auth/impersonate/impersonate.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424
"time"
2525

2626
"cloud.google.com/go/auth"
27-
"cloud.google.com/go/auth/detect"
2827
"cloud.google.com/go/auth/httptransport"
2928
"cloud.google.com/go/auth/internal"
3029
)
@@ -57,9 +56,9 @@ func NewCredentialTokenProvider(opts *CredentialOptions) (auth.TokenProvider, er
5756
if opts.Client == nil && opts.TokenProvider == nil {
5857
var err error
5958
client, err = httptransport.NewClient(&httptransport.Options{
60-
DetectOpts: &detect.Options{
61-
Audience: defaultAud,
62-
Scopes: []string{defaultScope},
59+
InternalOptions: &httptransport.InternalOptions{
60+
DefaultAudience: defaultAud,
61+
DefaultScopes: []string{defaultScope},
6362
},
6463
})
6564
if err != nil {

auth/impersonate/integration_test.go

Lines changed: 51 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,20 @@ func TestMain(m *testing.M) {
7272
func TestCredentialsTokenSourceIntegration(t *testing.T) {
7373
testutil.IntegrationTestCheck(t)
7474
tests := []struct {
75-
name string
76-
baseKeyFile string
77-
delegates []string
75+
name string
76+
baseKeyFile string
77+
delegates []string
78+
useDefaultCreds bool
7879
}{
7980
{
8081
name: "SA -> SA",
8182
baseKeyFile: readerKeyFile,
8283
},
84+
{
85+
name: "SA -> SA (Default)",
86+
baseKeyFile: readerKeyFile,
87+
useDefaultCreds: true,
88+
},
8389
{
8490
name: "SA -> Delegate -> SA",
8591
baseKeyFile: baseKeyFile,
@@ -90,19 +96,27 @@ func TestCredentialsTokenSourceIntegration(t *testing.T) {
9096
for _, tt := range tests {
9197
t.Run(tt.name, func(t *testing.T) {
9298
ctx := context.Background()
93-
creds, err := detect.DefaultCredentials(&detect.Options{
94-
Scopes: []string{"https://www.googleapis.com/auth/cloud-platform"},
95-
CredentialsFile: tt.baseKeyFile,
96-
})
97-
if err != nil {
98-
t.Fatalf("detect.DefaultCredentials() = %v", err)
99+
var creds *detect.Credentials
100+
if !tt.useDefaultCreds {
101+
var err error
102+
creds, err = detect.DefaultCredentials(&detect.Options{
103+
Scopes: []string{"https://www.googleapis.com/auth/cloud-platform"},
104+
CredentialsFile: tt.baseKeyFile,
105+
})
106+
if err != nil {
107+
t.Fatalf("detect.DefaultCredentials() = %v", err)
108+
}
99109
}
100-
tp, err := impersonate.NewCredentialTokenProvider(&impersonate.CredentialOptions{
110+
111+
opts := &impersonate.CredentialOptions{
101112
TargetPrincipal: writerEmail,
102113
Scopes: []string{"https://www.googleapis.com/auth/devstorage.full_control"},
103114
Delegates: tt.delegates,
104-
TokenProvider: creds,
105-
})
115+
}
116+
if !tt.useDefaultCreds {
117+
opts.TokenProvider = creds
118+
}
119+
tp, err := impersonate.NewCredentialTokenProvider(opts)
106120
if err != nil {
107121
t.Fatalf("failed to create ts: %v", err)
108122
}
@@ -123,14 +137,20 @@ func TestIDTokenSourceIntegration(t *testing.T) {
123137

124138
ctx := context.Background()
125139
tests := []struct {
126-
name string
127-
baseKeyFile string
128-
delegates []string
140+
name string
141+
baseKeyFile string
142+
delegates []string
143+
useDefaultCreds bool
129144
}{
130145
{
131146
name: "SA -> SA",
132147
baseKeyFile: readerKeyFile,
133148
},
149+
150+
{
151+
name: "SA -> SA (Default)",
152+
useDefaultCreds: true,
153+
},
134154
{
135155
name: "SA -> Delegate -> SA",
136156
baseKeyFile: baseKeyFile,
@@ -141,21 +161,28 @@ func TestIDTokenSourceIntegration(t *testing.T) {
141161
for _, tt := range tests {
142162
name := tt.name
143163
t.Run(name, func(t *testing.T) {
144-
creds, err := detect.DefaultCredentials(&detect.Options{
145-
Scopes: []string{"https://www.googleapis.com/auth/cloud-platform"},
146-
CredentialsFile: tt.baseKeyFile,
147-
})
148-
if err != nil {
149-
t.Fatalf("detect.DefaultCredentials() = %v", err)
164+
var creds *detect.Credentials
165+
if !tt.useDefaultCreds {
166+
var err error
167+
creds, err = detect.DefaultCredentials(&detect.Options{
168+
Scopes: []string{"https://www.googleapis.com/auth/cloud-platform"},
169+
CredentialsFile: tt.baseKeyFile,
170+
})
171+
if err != nil {
172+
t.Fatalf("detect.DefaultCredentials() = %v", err)
173+
}
150174
}
151175
aud := "http://example.com/"
152-
tp, err := impersonate.NewIDTokenProvider(&impersonate.IDTokenOptions{
176+
opts := &impersonate.IDTokenOptions{
153177
TargetPrincipal: writerEmail,
154178
Audience: aud,
155179
Delegates: tt.delegates,
156180
IncludeEmail: true,
157-
TokenProvider: creds,
158-
})
181+
}
182+
if !tt.useDefaultCreds {
183+
opts.TokenProvider = creds
184+
}
185+
tp, err := impersonate.NewIDTokenProvider(opts)
159186
if err != nil {
160187
t.Fatalf("failed to create ts: %v", err)
161188
}

auth/internal/transport/s2a.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ func shouldUseS2A(clientCertSource cert.Provider, opts *Options) bool {
161161
if clientCertSource != nil {
162162
return false
163163
}
164-
log.Println(os.Getenv(googleAPIUseS2AEnv))
165164
// If EXPERIMENTAL_GOOGLE_API_USE_S2A is not set to true, skip S2A.
166165
if b, err := strconv.ParseBool(os.Getenv(googleAPIUseS2AEnv)); err == nil && !b {
167166
return false

0 commit comments

Comments
 (0)