|
73 | 73 | audienceFlag string |
74 | 74 | dataDirFlag string |
75 | 75 | headlessFlag bool |
| 76 | + authModeFlag string |
76 | 77 | daemonizeFlag bool |
77 | 78 | resetAllFlag bool |
78 | 79 | assumeYesFlag bool |
@@ -276,12 +277,21 @@ func interactiveJoin(ctx context.Context, store *node.Store, targetControlPlane |
276 | 277 | fmt.Printf("Client ID discovered: %s\n", info.ClientId) |
277 | 278 |
|
278 | 279 | logger.Info("Discovering OIDC endpoints...") |
279 | | - tokenURL, authURL, err := dummyNode.DiscoverEndpoints(ctx, info.OidcIssuer) |
| 280 | + endpoints, err := dummyNode.DiscoverEndpointsWithDevice(ctx, info.OidcIssuer) |
280 | 281 | if err != nil { |
281 | 282 | return "", nil, fmt.Errorf("failed to discover OIDC endpoints: %w", err) |
282 | 283 | } |
| 284 | + deviceAuthURL := endpoints.DeviceAuthURL |
| 285 | + if deviceAuthURLFlag != "" { |
| 286 | + deviceAuthURL = deviceAuthURLFlag |
| 287 | + } |
| 288 | + |
| 289 | + mode, err := node.ParseAuthMode(authModeFlag) |
| 290 | + if err != nil { |
| 291 | + return "", nil, fmt.Errorf("invalid --auth-mode: %w", err) |
| 292 | + } |
283 | 293 |
|
284 | | - jwtStr, err := dummyNode.InteractiveLogin(ctx, authURL, tokenURL, info.ClientId, info.Audience, offlineAccessFlag, headlessFlag) |
| 294 | + jwtStr, err := dummyNode.InteractiveLoginWithMode(ctx, endpoints.AuthURL, endpoints.TokenURL, deviceAuthURL, info.ClientId, info.Audience, offlineAccessFlag, headlessFlag, mode) |
285 | 295 | if err != nil { |
286 | 296 | return "", nil, fmt.Errorf("failed to get token: %w", err) |
287 | 297 | } |
@@ -935,6 +945,7 @@ func main() { |
935 | 945 | rootCmd.PersistentFlags().StringVar(&audienceFlag, "audience", api.DefaultAudience, "OIDC Audience") |
936 | 946 | rootCmd.PersistentFlags().StringVar(&dataDirFlag, "data-dir", "", "Override directory for the agent store (defaults to OS user config dir)") |
937 | 947 | rootCmd.PersistentFlags().BoolVar(&headlessFlag, "headless", false, "Force headless out-of-band (OOB) authentication flow") |
| 948 | + rootCmd.PersistentFlags().StringVar(&authModeFlag, "auth-mode", "auto", "Interactive enrollment auth mode: auto, device, oob, or browser") |
938 | 949 |
|
939 | 950 | rootCmd.AddCommand(runCmd) |
940 | 951 | rootCmd.AddCommand(joinCmd) |
|
0 commit comments