Skip to content

Commit ba5787b

Browse files
Fix bearer-token auth in controlplaneproxy (#182)
* Fix bearer-token auth in controlplaneproxy * Fix in local proxy description * Update libconnect * Point libconnect to main version
1 parent d16969d commit ba5787b

File tree

5 files changed

+56
-17
lines changed

5 files changed

+56
-17
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ require (
1818
github.com/oklog/run v1.1.0
1919
github.com/panta/machineid v1.0.2
2020
github.com/signadot/go-sdk v0.3.8-0.20250502141929-71adbfb62bd0
21-
github.com/signadot/libconnect v0.1.1-0.20250502144057-7eab70077f7f
21+
github.com/signadot/libconnect v0.1.1-0.20250505143054-fbbea25d0081
2222
github.com/spf13/cobra v1.8.1
2323
github.com/spf13/viper v1.11.0
2424
github.com/theckman/yacspin v0.13.12

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -333,8 +333,8 @@ github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN
333333
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
334334
github.com/signadot/go-sdk v0.3.8-0.20250502141929-71adbfb62bd0 h1:ujylkC2g7u05OYm91oa+ovPK8nmjQq7PO39PNexNP3o=
335335
github.com/signadot/go-sdk v0.3.8-0.20250502141929-71adbfb62bd0/go.mod h1:pnXR9BhGedBWjtAZGwGGY94sMgh6VuAbP/4vq4Qw1Fg=
336-
github.com/signadot/libconnect v0.1.1-0.20250502144057-7eab70077f7f h1:V4kQgQsEJhDfh1LYa2LW2SoJLMaoCP2IYnCpIcMuQXc=
337-
github.com/signadot/libconnect v0.1.1-0.20250502144057-7eab70077f7f/go.mod h1:MWfhryOARFnhDnmYGcTmmu+kHJbE6z0dDgKQpxOKVLQ=
336+
github.com/signadot/libconnect v0.1.1-0.20250505143054-fbbea25d0081 h1:sGiEMUNzm4ZsjVtBJQGkTsnVYJSTN/VW0V5oVAMhmxY=
337+
github.com/signadot/libconnect v0.1.1-0.20250505143054-fbbea25d0081/go.mod h1:MWfhryOARFnhDnmYGcTmmu+kHJbE6z0dDgKQpxOKVLQ=
338338
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
339339
github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8=
340340
github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY=

internal/auth/auth.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package auth
22

33
import (
4+
"net/http"
45
"time"
56

7+
"github.com/go-openapi/runtime"
8+
"github.com/signadot/go-sdk/transport"
69
"github.com/spf13/viper"
710
)
811

@@ -65,3 +68,21 @@ func loadAuth() (*ResolvedAuth, error) {
6568
Auth: *auth,
6669
}, nil
6770
}
71+
72+
func GetHeaders() (http.Header, error) {
73+
authInfo, err := ResolveAuth()
74+
if err != nil {
75+
return nil, err
76+
}
77+
78+
headers := http.Header{}
79+
if authInfo == nil {
80+
return headers, nil
81+
}
82+
if authInfo.APIKey != "" {
83+
headers.Set(transport.APIKeyHeader, authInfo.APIKey)
84+
} else if authInfo.BearerToken != "" {
85+
headers.Set(runtime.HeaderAuthorization, "Bearer "+authInfo.BearerToken)
86+
}
87+
return headers, nil
88+
}

internal/command/local/proxy.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
_ "net/http/pprof"
1010

1111
"github.com/oklog/run"
12+
"github.com/signadot/cli/internal/auth"
1213
"github.com/signadot/cli/internal/config"
1314
clusters "github.com/signadot/go-sdk/client/cluster"
1415
routegroups "github.com/signadot/go-sdk/client/route_groups"
@@ -23,7 +24,7 @@ func newProxy(localConfig *config.Local) *cobra.Command {
2324
}
2425

2526
cmd := &cobra.Command{
26-
Use: "proxy [--sandbox SANDBOX|--routegroup ROUTEGROUP|--cluster CLUSTER] --map <target-protocol>://<target-addr>|<bind-addr> [--map <target-protocol>://<target-addr>@<bind-addr>]",
27+
Use: "proxy [--sandbox SANDBOX|--routegroup ROUTEGROUP|--cluster CLUSTER] --map <target-protocol>://<target-addr>@<bind-addr> [--map <target-protocol>://<target-addr>@<bind-addr>]",
2728
Short: "Proxy connections based on the specified mappings",
2829
RunE: func(cmd *cobra.Command, args []string) error {
2930
return runProxy(cmd, cmd.OutOrStdout(), cfg, args)
@@ -92,13 +93,14 @@ func runProxy(cmd *cobra.Command, out io.Writer, cfg *config.LocalProxy, args []
9293
pm := &cfg.ProxyMappings[i]
9394

9495
ctlPlaneProxy, err := controlplaneproxy.NewProxy(&controlplaneproxy.Config{
95-
Log: log,
96-
ProxyURL: cfg.ProxyURL,
97-
TargetURL: pm.GetTarget(),
98-
Cluster: cluster,
99-
RoutingKey: routingKey,
100-
BindAddr: pm.BindAddr,
101-
}, cfg.GetAPIKey())
96+
Log: log,
97+
ProxyURL: cfg.ProxyURL,
98+
TargetURL: pm.GetTarget(),
99+
Cluster: cluster,
100+
RoutingKey: routingKey,
101+
BindAddr: pm.BindAddr,
102+
GetInjectHeaders: auth.GetHeaders,
103+
})
102104
if err != nil {
103105
return err
104106
}

internal/locald/sandboxmanager/sandbox_manager.go

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,18 @@ import (
44
"context"
55
"fmt"
66
"net"
7+
"net/http"
78
"os"
89
"os/signal"
910
"syscall"
1011

1112
"log/slog"
1213

14+
"github.com/signadot/cli/internal/auth"
1315
"github.com/signadot/cli/internal/config"
1416
sbapi "github.com/signadot/cli/internal/locald/api/sandboxmanager"
1517
"github.com/signadot/cli/internal/utils/system"
18+
"github.com/signadot/go-sdk/transport"
1619
tunapiclient "github.com/signadot/libconnect/common/apiclient"
1720
"github.com/signadot/libconnect/common/controlplaneproxy"
1821
"google.golang.org/grpc"
@@ -106,14 +109,27 @@ func (m *sandboxManager) Run(ctx context.Context) error {
106109
m.log, 0, "signadot", "tunnel-proxy", 1080,
107110
)
108111
case connectcfg.ControlPlaneProxyLinkType:
112+
getHeaders := func() (http.Header, error) {
113+
headers, err := auth.GetHeaders()
114+
if err != nil {
115+
return nil, err
116+
}
117+
if len(headers) == 0 && m.ciConfig.APIKey != "" {
118+
// give precedence to auth info coming from the keying store
119+
headers.Set(transport.APIKeyHeader, m.ciConfig.APIKey)
120+
}
121+
return headers, nil
122+
}
123+
109124
// Start a control-plane proxy
110125
ctlPlaneProxy, err := controlplaneproxy.NewProxy(&controlplaneproxy.Config{
111-
Log: m.log,
112-
ProxyURL: m.ciConfig.ProxyURL,
113-
TargetURL: "tcp://tunnel-proxy.signadot.svc:1080",
114-
Cluster: m.connConfig.Cluster,
115-
BindAddr: ":0",
116-
}, m.ciConfig.APIKey)
126+
Log: m.log,
127+
ProxyURL: m.ciConfig.ProxyURL,
128+
TargetURL: "tcp://tunnel-proxy.signadot.svc:1080",
129+
Cluster: m.connConfig.Cluster,
130+
BindAddr: ":0",
131+
GetInjectHeaders: getHeaders,
132+
})
117133
if err != nil {
118134
return err
119135
}

0 commit comments

Comments
 (0)