@@ -231,20 +231,8 @@ func proxyCmdFunc(cmd *cobra.Command, args []string) error {
231
231
middlewares = append (middlewares , authMiddleware )
232
232
233
233
// Add OAuth token injection or token exchange middleware for outgoing requests
234
- if remoteAuthFlags .TokenExchangeURL != "" {
235
- // Use token exchange middleware when token exchange is configured
236
- tokenExchangeConfig := createTokenExchangeConfig ()
237
- if tokenExchangeConfig != nil {
238
- tokenExchangeMiddleware , teMwErr := tokenexchange .CreateTokenExchangeMiddlewareFromClaims (* tokenExchangeConfig )
239
- if teMwErr != nil {
240
- return fmt .Errorf ("failed to create token exchange middleware: %v" , teMwErr )
241
- }
242
- middlewares = append (middlewares , tokenExchangeMiddleware )
243
- }
244
- } else if tokenSource != nil {
245
- // Fallback to direct token injection when no token exchange is configured
246
- tokenMiddleware := createTokenInjectionMiddleware (tokenSource )
247
- middlewares = append (middlewares , tokenMiddleware )
234
+ if err := addExternalTokenMiddleware (& middlewares , tokenSource ); err != nil {
235
+ return err
248
236
}
249
237
250
238
// Create the transparent proxy
@@ -440,6 +428,26 @@ func createTokenInjectionMiddleware(tokenSource *oauth2.TokenSource) types.Middl
440
428
}
441
429
}
442
430
431
+ // addExternalTokenMiddleware adds token exchange or token injection middleware to the middleware chain
432
+ func addExternalTokenMiddleware (middlewares * []types.MiddlewareFunction , tokenSource * oauth2.TokenSource ) error {
433
+ if remoteAuthFlags .TokenExchangeURL != "" {
434
+ // Use token exchange middleware when token exchange is configured
435
+ tokenExchangeConfig := createTokenExchangeConfig ()
436
+ if tokenExchangeConfig != nil {
437
+ tokenExchangeMiddleware , err := tokenexchange .CreateTokenExchangeMiddlewareFromClaims (* tokenExchangeConfig )
438
+ if err != nil {
439
+ return fmt .Errorf ("failed to create token exchange middleware: %v" , err )
440
+ }
441
+ * middlewares = append (* middlewares , tokenExchangeMiddleware )
442
+ }
443
+ } else if tokenSource != nil {
444
+ // Fallback to direct token injection when no token exchange is configured
445
+ tokenMiddleware := createTokenInjectionMiddleware (tokenSource )
446
+ * middlewares = append (* middlewares , tokenMiddleware )
447
+ }
448
+ return nil
449
+ }
450
+
443
451
// validateProxyTargetURI validates that the target URI for the proxy is valid and does not contain a path
444
452
func validateProxyTargetURI (targetURI string ) error {
445
453
// Parse the target URI
0 commit comments