@@ -7,9 +7,11 @@ import (
10+ "github.com/coreos/go-oidc/v3/oidc"
10 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/options"
11 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/options"
11 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
12 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/apis/sessions"
12 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/logger"
13 "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/logger"
14+ "github.com/oauth2-proxy/oauth2-proxy/v7/pkg/requests"
13 "golang.org/x/oauth2"
15 "golang.org/x/oauth2"
@@ -83,6 +85,8 @@ func (p *OIDCProvider) Redeem(ctx context.Context, redirectURL, code, codeVerifi
84 RedirectURL: redirectURL,
86 RedirectURL: redirectURL,
89+ ctx = oidc.ClientContext(ctx, requests.DefaultHTTPClient)
86 token, err := c.Exchange(ctx, code, opts...)
90 token, err := c.Exchange(ctx, code, opts...)
87 if err != nil {
91 if err != nil {
88 return nil, fmt.Errorf("token exchange failed: %v", err)
92 return nil, fmt.Errorf("token exchange failed: %v", err)
@@ -103,6 +107,7 @@ func (p *OIDCProvider) EnrichSession(_ context.Context, s *sessions.SessionState
104// ValidateSession checks that the session's IDToken is still valid
108// ValidateSession checks that the session's IDToken is still valid
105func (p *OIDCProvider) ValidateSession(ctx context.Context, s *sessions.SessionState) bool {
109func (p *OIDCProvider) ValidateSession(ctx context.Context, s *sessions.SessionState) bool {
110+ ctx = oidc.ClientContext(ctx, requests.DefaultHTTPClient)
106 _, err := p.Verifier.Verify(ctx, s.IDToken)
111 _, err := p.Verifier.Verify(ctx, s.IDToken)
107 if err != nil {
112 if err != nil {
108 logger.Errorf("id_token verification failed: %v", err)
113 logger.Errorf("id_token verification failed: %v", err)
@@ -127,6 +132,7 @@ func (p *OIDCProvider) RefreshSession(ctx context.Context, s *sessions.SessionSt
127 return false, nil
132 return false, nil
135+ ctx = oidc.ClientContext(ctx, requests.DefaultHTTPClient)
130 err := p.redeemRefreshToken(ctx, s)
136 err := p.redeemRefreshToken(ctx, s)
131 if err != nil {
137 if err != nil {
132 return false, fmt.Errorf("unable to redeem refresh token: %v", err)
138 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
186// CreateSessionFromToken converts Bearer IDTokens into sessions
192// CreateSessionFromToken converts Bearer IDTokens into sessions
187func (p *OIDCProvider) CreateSessionFromToken(ctx context.Context, token string) (*sessions.SessionState, error) {
193func (p *OIDCProvider) CreateSessionFromToken(ctx context.Context, token string) (*sessions.SessionState, error) {
194+ ctx = oidc.ClientContext(ctx, requests.DefaultHTTPClient)
188 idToken, err := p.Verifier.Verify(ctx, token)
195 idToken, err := p.Verifier.Verify(ctx, token)
189 if err != nil {
196 if err != nil {
190 return nil, err
197 return nil, err