@@ -231,20 +231,8 @@ func proxyCmdFunc(cmd *cobra.Command, args []string) error {
231231 middlewares = append (middlewares , authMiddleware )
232232
233233 // 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
248236 }
249237
250238 // Create the transparent proxy
@@ -440,6 +428,26 @@ func createTokenInjectionMiddleware(tokenSource *oauth2.TokenSource) types.Middl
440428 }
441429}
442430
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+
443451// validateProxyTargetURI validates that the target URI for the proxy is valid and does not contain a path
444452func validateProxyTargetURI (targetURI string ) error {
445453 // Parse the target URI
0 commit comments