mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-10-31 18:48:08 +00:00 
			
		
		
		
	command/auth-enable
This commit is contained in:
		| @@ -27,7 +27,7 @@ func (c *Sys) EnableAuth(path, authType, desc string) error { | |||||||
| 		"description": desc, | 		"description": desc, | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	r := c.c.NewRequest("PUT", fmt.Sprintf("/v1/sys/auth/%s", path)) | 	r := c.c.NewRequest("POST", fmt.Sprintf("/v1/sys/auth/%s", path)) | ||||||
| 	if err := r.SetJSONBody(body); err != nil { | 	if err := r.SetJSONBody(body); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|   | |||||||
							
								
								
									
										98
									
								
								command/auth_enable.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								command/auth_enable.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,98 @@ | |||||||
|  | package command | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"strings" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // AuthEnableCommand is a Command that enables a new endpoint. | ||||||
|  | type AuthEnableCommand struct { | ||||||
|  | 	Meta | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (c *AuthEnableCommand) Run(args []string) int { | ||||||
|  | 	var description, path string | ||||||
|  | 	flags := c.Meta.FlagSet("auth-enable", FlagSetDefault) | ||||||
|  | 	flags.StringVar(&description, "description", "", "") | ||||||
|  | 	flags.StringVar(&path, "path", "", "") | ||||||
|  | 	flags.Usage = func() { c.Ui.Error(c.Help()) } | ||||||
|  | 	if err := flags.Parse(args); err != nil { | ||||||
|  | 		return 1 | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	args = flags.Args() | ||||||
|  | 	if len(args) != 1 { | ||||||
|  | 		flags.Usage() | ||||||
|  | 		c.Ui.Error(fmt.Sprintf( | ||||||
|  | 			"\nauth-enable expects one argument: the type to enable.")) | ||||||
|  | 		return 1 | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	authType := args[0] | ||||||
|  |  | ||||||
|  | 	// If no path is specified, we default the path to the backend type | ||||||
|  | 	if path == "" { | ||||||
|  | 		path = authType | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	client, err := c.Client() | ||||||
|  | 	if err != nil { | ||||||
|  | 		c.Ui.Error(fmt.Sprintf( | ||||||
|  | 			"Error initializing client: %s", err)) | ||||||
|  | 		return 2 | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if err := client.Sys().EnableAuth(path, authType, description); err != nil { | ||||||
|  | 		c.Ui.Error(fmt.Sprintf( | ||||||
|  | 			"Error: %s", err)) | ||||||
|  | 		return 2 | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	c.Ui.Output(fmt.Sprintf( | ||||||
|  | 		"Successfully enabled '%s' at '%s'!", | ||||||
|  | 		authType, path)) | ||||||
|  |  | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (c *AuthEnableCommand) Synopsis() string { | ||||||
|  | 	return "Enable a new auth provider" | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (c *AuthEnableCommand) Help() string { | ||||||
|  | 	helpText := ` | ||||||
|  | Usage: vault auth-enable [options] type | ||||||
|  |  | ||||||
|  |   Enable a new auth provider. | ||||||
|  |  | ||||||
|  |   This command enables a new auth provider. An auth provider is responsible | ||||||
|  |   for authenticating a user and assigning them policies with which they can | ||||||
|  |   access Vault. | ||||||
|  |  | ||||||
|  | General Options: | ||||||
|  |  | ||||||
|  |   -address=TODO           The address of the Vault server. | ||||||
|  |  | ||||||
|  |   -ca-cert=path           Path to a PEM encoded CA cert file to use to | ||||||
|  |                           verify the Vault server SSL certificate. | ||||||
|  |  | ||||||
|  |   -ca-path=path           Path to a directory of PEM encoded CA cert files | ||||||
|  |                           to verify the Vault server SSL certificate. If both | ||||||
|  |                           -ca-cert and -ca-path are specified, -ca-path is used. | ||||||
|  |  | ||||||
|  |   -insecure               Do not verify TLS certificate. This is highly | ||||||
|  |                           not recommended. This is especially not recommended | ||||||
|  |                           for unsealing a vault. | ||||||
|  |  | ||||||
|  | Auth Enable Options: | ||||||
|  |  | ||||||
|  |   -description=<desc>     Human-friendly description of the purpose for the | ||||||
|  |                           auth provider. This shows up in the auth-list command. | ||||||
|  |  | ||||||
|  |   -path=<path>            Mount point for the auth provider. This defaults | ||||||
|  |                           to the type of the mount. This will make the auth | ||||||
|  |                           provider available at "/auth/<path>" | ||||||
|  |  | ||||||
|  | ` | ||||||
|  | 	return strings.TrimSpace(helpText) | ||||||
|  | } | ||||||
							
								
								
									
										49
									
								
								command/auth_enable_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								command/auth_enable_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,49 @@ | |||||||
|  | package command | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"testing" | ||||||
|  |  | ||||||
|  | 	"github.com/hashicorp/vault/http" | ||||||
|  | 	"github.com/hashicorp/vault/vault" | ||||||
|  | 	"github.com/mitchellh/cli" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func TestAuthEnable(t *testing.T) { | ||||||
|  | 	core, _, token := vault.TestCoreUnsealed(t) | ||||||
|  | 	ln, addr := http.TestServer(t, core) | ||||||
|  | 	defer ln.Close() | ||||||
|  |  | ||||||
|  | 	ui := new(cli.MockUi) | ||||||
|  | 	c := &AuthEnableCommand{ | ||||||
|  | 		Meta: Meta{ | ||||||
|  | 			ClientToken: token, | ||||||
|  | 			Ui:          ui, | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	args := []string{ | ||||||
|  | 		"-address", addr, | ||||||
|  | 		"noop", | ||||||
|  | 	} | ||||||
|  | 	if code := c.Run(args); code != 0 { | ||||||
|  | 		t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String()) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	client, err := c.Client() | ||||||
|  | 	if err != nil { | ||||||
|  | 		t.Fatalf("err: %s", err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	mounts, err := client.Sys().ListAuth() | ||||||
|  | 	if err != nil { | ||||||
|  | 		t.Fatalf("err: %s", err) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	mount, ok := mounts["noop"] | ||||||
|  | 	if !ok { | ||||||
|  | 		t.Fatal("should have noop mount") | ||||||
|  | 	} | ||||||
|  | 	if mount.Type != "noop" { | ||||||
|  | 		t.Fatal("should be noop type") | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -31,6 +31,12 @@ func init() { | |||||||
| 			}, nil | 			}, nil | ||||||
| 		}, | 		}, | ||||||
|  |  | ||||||
|  | 		"auth-enable": func() (cli.Command, error) { | ||||||
|  | 			return &command.AuthEnableCommand{ | ||||||
|  | 				Meta: meta, | ||||||
|  | 			}, nil | ||||||
|  | 		}, | ||||||
|  |  | ||||||
| 		"read": func() (cli.Command, error) { | 		"read": func() (cli.Command, error) { | ||||||
| 			return &command.ReadCommand{ | 			return &command.ReadCommand{ | ||||||
| 				Meta: meta, | 				Meta: meta, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Mitchell Hashimoto
					Mitchell Hashimoto