@@ -103,14 +103,7 @@ func (o *LoginOptions) Complete(args []string) error {
103103 return err
104104 }
105105
106- o .loginClient = & http.Client {
107- Transport : & http.Transport {
108- DialContext : (& net.Dialer {
109- Timeout : 5 * time .Second ,
110- KeepAlive : 30 * time .Second ,
111- }).DialContext ,
112- },
113- }
106+ o .loginClient = http .DefaultClient
114107
115108 return nil
116109}
@@ -134,19 +127,20 @@ func (o *LoginOptions) Run(ctx context.Context, authURLCh chan<- string) error {
134127 tokenCh := make (chan * TokenResponse , 1 )
135128 errCh := make (chan error , 1 )
136129
137- server , localCallbackURL , err := o .startCallbackServerWithRandomPort (sessionID , tokenCh , errCh )
138- if err != nil {
139- return fmt .Errorf ("failed to start callback server: %w" , err )
140- }
141- defer server .Close ()
142-
143130 // Get provider information
144131 fmt .Fprintf (o .Streams .ErrOut , "Connecting to kube-bind server %s...\n " , o .Options .Server )
145132 provider , err := o .getProvider (ctx )
146133 if err != nil {
147134 return fmt .Errorf ("failed to get provider information: %w" , err )
148135 }
149136
137+ server , localCallbackURL , err := o .startCallbackServerWithRandomPort (tokenCh , errCh )
138+ if err != nil {
139+ return fmt .Errorf ("failed to start callback server: %w" , err )
140+ }
141+ defer server .Close ()
142+ fmt .Fprintf (o .Streams .ErrOut , "Started local callback server at %s\n " , localCallbackURL )
143+
150144 // Start authentication flow
151145 authURL , err := o .buildAuthURL (provider , localCallbackURL , sessionID )
152146 if err != nil {
@@ -156,7 +150,6 @@ func (o *LoginOptions) Run(ctx context.Context, authURLCh chan<- string) error {
156150 authURLCh <- authURL
157151 }
158152
159- fmt .Fprintf (o .Streams .ErrOut , "\n Started callback server at %s\n " , localCallbackURL )
160153 if ! o .SkipBrowser {
161154 fmt .Fprintf (o .Streams .ErrOut , "Opening browser for authentication... %s\n " , authURL )
162155 err = base .OpenBrowser (authURL )
@@ -308,25 +301,20 @@ func (o *LoginOptions) buildAuthURL(provider *kubebindv1alpha2.BindingProvider,
308301 return u .String (), nil
309302}
310303
311- func (o * LoginOptions ) startCallbackServerWithRandomPort (sessionID string , tokenCh chan <- * TokenResponse , errCh chan <- error ) (* http.Server , string , error ) {
312- expectedSessionID := sessionID
304+ func (o * LoginOptions ) startCallbackServerWithRandomPort (tokenCh chan <- * TokenResponse , errCh chan <- error ) (* http.Server , string , error ) {
313305 listener , err := net .Listen ("tcp" , "127.0.0.1:0" )
314306 if err != nil {
315307 return nil , "" , fmt .Errorf ("failed to find available port: %w" , err )
316308 }
317309
318310 port := listener .Addr ().(* net.TCPAddr ).Port
311+ listener .Close ()
319312
320313 callbackURL := fmt .Sprintf ("http://127.0.0.1:%d/callback" , port )
321314
322315 // Setup HTTP handler
323316 mux := http .NewServeMux ()
324317 mux .HandleFunc ("/callback" , func (w http.ResponseWriter , r * http.Request ) {
325- receivedSessionID := r .URL .Query ().Get ("session_id" )
326- if receivedSessionID != expectedSessionID {
327- http .Error (w , "Invalid session" , http .StatusBadRequest )
328- return
329- }
330318 token := & TokenResponse {
331319 Error : r .URL .Query ().Get ("error" ),
332320 ErrorMessage : r .URL .Query ().Get ("error_description" ),
@@ -361,7 +349,8 @@ func (o *LoginOptions) startCallbackServerWithRandomPort(sessionID string, token
361349 <p>You can now close this window and return to the CLI.</p>
362350 </div>
363351</body>
364- </html>` , map [bool ]string {true : "success" , false : "error" }[token .Error == "" ],
352+ </html>` ,
353+ map [bool ]string {true : "success" , false : "error" }[token .Error == "" ],
365354 map [bool ]string {true : "Authentication Successful!" , false : "Authentication Failed" }[token .Error == "" ])
366355
367356 select {
@@ -371,9 +360,8 @@ func (o *LoginOptions) startCallbackServerWithRandomPort(sessionID string, token
371360 })
372361
373362 server := & http.Server {
374- ReadTimeout : 5 * time .Minute ,
375- Addr : fmt .Sprintf (":%d" , port ),
376- Handler : mux ,
363+ Addr : fmt .Sprintf (":%d" , port ),
364+ Handler : mux ,
377365 }
378366
379367 go func () {
0 commit comments