@@ -7,9 +7,11 @@ import (
77 "net/url"
88 "time"
99
10+ "github.com/coreos/go-oidc/v3/oidc"
1011 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/options"
1112 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
1213 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/logger"
14+ "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/requests"
1315 "golang.org/x/oauth2"
1416)
1517
@@ -83,6 +85,8 @@ func (p *OIDCProvider) Redeem(ctx context.Context, redirectURL, code, codeVerifi
8385 },
8486 RedirectURL: redirectURL,
8587 }
88+
89+ ctx = oidc.ClientContext(ctx, requests.DefaultHTTPClient)
8690 token, err := c.Exchange(ctx, code, opts...)
8791 if err != nil {
8892 return nil, fmt.Errorf("token exchange failed: %v", err)
@@ -103,6 +107,7 @@ func (p *OIDCProvider) EnrichSession(_ context.Context, s *sessions.SessionState
103107
104108// ValidateSession checks that the session's IDToken is still valid
105109func (p *OIDCProvider) ValidateSession(ctx context.Context, s *sessions.SessionState) bool {
110+ ctx = oidc.ClientContext(ctx, requests.DefaultHTTPClient)
106111 _, err := p.Verifier.Verify(ctx, s.IDToken)
107112 if err != nil {
108113 logger.Errorf("id_token verification failed: %v", err)
@@ -127,6 +132,7 @@ func (p *OIDCProvider) RefreshSession(ctx context.Context, s *sessions.SessionSt
127132 return false, nil
128133 }
129134
135+ ctx = oidc.ClientContext(ctx, requests.DefaultHTTPClient)
130136 err := p.redeemRefreshToken(ctx, s)
131137 if err != nil {
132138 return false, fmt.Errorf("unable to redeem refresh token: %v", err)
@@ -185,6 +191,7 @@ func (p *OIDCProvider) redeemRefreshToken(ctx context.Context, s *sessions.Sessi
185191
186192// CreateSessionFromToken converts Bearer IDTokens into sessions
187193func (p *OIDCProvider) CreateSessionFromToken(ctx context.Context, token string) (*sessions.SessionState, error) {
194+ ctx = oidc.ClientContext(ctx, requests.DefaultHTTPClient)
188195 idToken, err := p.Verifier.Verify(ctx, token)
189196 if err != nil {
190197 return nil, err