Skip to content

Commit 516a883

Browse files
committed
Fix golinting around JWT changes
Signed-off-by: Brian Groux <[email protected]>
1 parent f7a15bd commit 516a883

File tree

4 files changed

+18
-14
lines changed

4 files changed

+18
-14
lines changed

util/oidc/oidc_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ func (p *fakeProvider) Verify(_ context.Context, _ string, _ *settings.ArgoCDSet
121121
return nil, nil
122122
}
123123

124-
func (p *fakeProvider) VerifyJWT(_ string, _ *settings.ArgoCDSettings) (*jwtgo.Token, error) {
124+
func (p *fakeProvider) VerifyJWT(_ context.Context, _ string, _ *settings.ArgoCDSettings) (*jwtgo.Token, error) {
125125
return nil, nil
126126
}
127127

util/oidc/provider.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ type Provider interface {
3434

3535
Verify(ctx context.Context, tokenString string, argoSettings *settings.ArgoCDSettings) (*gooidc.IDToken, error)
3636

37-
// BG: add context?
38-
VerifyJWT(tokenString string, argoSettings *settings.ArgoCDSettings) (*jwtgo.Token, error)
37+
VerifyJWT(ctx context.Context, tokenString string, argoSettings *settings.ArgoCDSettings) (*jwtgo.Token, error)
3938
}
4039

4140
type providerImpl struct {
@@ -164,9 +163,9 @@ func (p *providerImpl) Verify(ctx context.Context, tokenString string, argoSetti
164163
}
165164

166165
// VerifyJWT verifies a JWT token using the configured JWK Set URL
167-
func (p *providerImpl) VerifyJWT(tokenString string, argoSettings *settings.ArgoCDSettings) (*jwtgo.Token, error) {
166+
func (p *providerImpl) VerifyJWT(ctx context.Context, tokenString string, argoSettings *settings.ArgoCDSettings) (*jwtgo.Token, error) {
168167
if !argoSettings.IsJWTConfigured() {
169-
return nil, errors.New("Valid JWT configuration not found")
168+
return nil, errors.New("valid JWT configuration not found")
170169
}
171170

172171
cacheTTL := p.defaultCacheTTL
@@ -179,7 +178,7 @@ func (p *providerImpl) VerifyJWT(tokenString string, argoSettings *settings.Argo
179178
}
180179
}
181180

182-
jwks, err := p.getJWKS(argoSettings.JWTConfig.JWKSetURL, cacheTTL)
181+
jwks, err := p.getJWKS(ctx, argoSettings.JWTConfig.JWKSetURL, cacheTTL)
183182
if err != nil {
184183
return nil, fmt.Errorf("failed to get JWKS: %w", err)
185184
}
@@ -311,15 +310,20 @@ func (p *providerImpl) VerifyJWT(tokenString string, argoSettings *settings.Argo
311310
return token, nil
312311
}
313312

314-
func (p *providerImpl) getJWKS(jwksURL string, cacheTTL time.Duration) (*jose.JSONWebKeySet, error) {
313+
func (p *providerImpl) getJWKS(ctx context.Context, jwksURL string, cacheTTL time.Duration) (*jose.JSONWebKeySet, error) {
315314
p.jwksCacheMux.Lock()
316315
defer p.jwksCacheMux.Unlock()
317316

318317
if p.jwksCache != nil && time.Now().Before(p.jwksExpiry) {
319318
return p.jwksCache, nil
320319
}
321320

322-
resp, err := http.Get(jwksURL)
321+
req, err := http.NewRequestWithContext(ctx, http.MethodGet, jwksURL, nil)
322+
if err != nil {
323+
return nil, err
324+
}
325+
326+
resp, err := http.DefaultClient.Do(req)
323327
if err != nil {
324328
return nil, fmt.Errorf("failed to fetch JWKS: %w", err)
325329
}

util/oidc/provider_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ func TestVerifyJWT(t *testing.T) {
296296
}
297297

298298
// Verify the JWT
299-
token, err := provider.VerifyJWT(tokenString, argoSettings)
299+
token, err := provider.VerifyJWT(t.Context(), tokenString, argoSettings)
300300

301301
// Assertions
302302
if tt.expectError {
@@ -359,20 +359,20 @@ func TestVerifyJWT_Cache(t *testing.T) {
359359
tokenString := generateTestToken(jwtgo.SigningMethodRS256, privateKey, kid, claims)
360360

361361
// First verification - should fetch JWKS
362-
_, err = provider.VerifyJWT(tokenString, argoSettings)
362+
_, err = provider.VerifyJWT(t.Context(), tokenString, argoSettings)
363363
require.NoError(t, err)
364364
require.Equal(t, 1, requestCount, "JWKS should be fetched on first call")
365365

366366
// Second verification - should use cache
367-
_, err = provider.VerifyJWT(tokenString, argoSettings)
367+
_, err = provider.VerifyJWT(t.Context(), tokenString, argoSettings)
368368
require.NoError(t, err)
369369
require.Equal(t, 1, requestCount, "JWKS should be cached on second call")
370370

371371
// Wait for cache to expire
372372
time.Sleep(1100 * time.Millisecond) // Wait slightly longer than TTL
373373

374374
// Third verification - should fetch JWKS again
375-
_, err = provider.VerifyJWT(tokenString, argoSettings)
375+
_, err = provider.VerifyJWT(t.Context(), tokenString, argoSettings)
376376
require.NoError(t, err)
377377
require.Equal(t, 2, requestCount, "JWKS should be fetched again after cache expiry")
378378
}

util/session/sessionmanager.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -589,7 +589,7 @@ func (mgr *SessionManager) VerifyToken(ctx context.Context, tokenString string)
589589
// Log the error but don't fail immediately, maybe it's an Argo CD token
590590
log.Warnf("Failed to get OIDC provider for JWT verification: %v", err)
591591
} else {
592-
token, jwtErr := prov.VerifyJWT(tokenString, argoSettings)
592+
token, jwtErr := prov.VerifyJWT(ctx, tokenString, argoSettings)
593593
if jwtErr == nil {
594594
// Successfully verified as JWT via JWKS URL
595595
log.Debug("Token verified using JWT config (JWKS URL)")
@@ -665,7 +665,7 @@ func (mgr *SessionManager) provider() (oidcutil.Provider, error) {
665665
return nil, err
666666
}
667667
// In the case of external JWT we need an OIDC provider to veryify tokens
668-
if !(settings.IsSSOConfigured() || settings.IsJWTConfigured()) {
668+
if !settings.IsSSOConfigured() && !settings.IsJWTConfigured() {
669669
return nil, errors.New("SSO or JWT is not configured")
670670
}
671671
mgr.prov = oidcutil.NewOIDCProvider(settings.IssuerURL(), mgr.client)

0 commit comments

Comments
 (0)