diff --git a/internal/cloudapi/v2/compose.go b/internal/cloudapi/v2/compose.go index 5444901d5b..f07d190aae 100644 --- a/internal/cloudapi/v2/compose.go +++ b/internal/cloudapi/v2/compose.go @@ -530,9 +530,10 @@ func (request *ComposeRequest) GetBlueprintFromCustomizations() (blueprint.Bluep } userCustomizations = append(userCustomizations, blueprint.UserCustomization{ - Name: user.Name, - Key: user.Key, - Groups: groups, + Name: user.Name, + Key: user.Key, + Password: user.Password, + Groups: groups, }, ) } @@ -898,6 +899,10 @@ func (request *ComposeRequest) GetBlueprintFromCustomizations() (blueprint.Bluep bp.Customizations = nil } + err = bp.CryptPasswords() + if err != nil { + return bp, fmt.Errorf("Error hashing passwords: %s", err.Error()) + } return bp, nil } diff --git a/internal/cloudapi/v2/compose_test.go b/internal/cloudapi/v2/compose_test.go index d50f9d3ac3..adef329bbd 100644 --- a/internal/cloudapi/v2/compose_test.go +++ b/internal/cloudapi/v2/compose_test.go @@ -47,9 +47,10 @@ func GetTestBlueprint() blueprint.Blueprint { expected.Customizations = &blueprint.Customizations{ User: []blueprint.UserCustomization{ blueprint.UserCustomization{ - Name: "admin", - Key: common.ToPtr("dummy ssh-key"), - Groups: []string{"users", "wheel"}, + Name: "admin", + Key: common.ToPtr("dummy ssh-key"), + Password: common.ToPtr("$6$secret-password"), + Groups: []string{"users", "wheel"}, }, }, Directories: []blueprint.DirectoryCustomization{ @@ -165,9 +166,10 @@ func TestGetBlueprintFromCustomizations(t *testing.T) { cr = ComposeRequest{Customizations: &Customizations{ Users: &[]User{ User{ - Name: "admin", - Key: common.ToPtr("dummy ssh-key"), - Groups: &[]string{"users", "wheel"}, + Name: "admin", + Key: common.ToPtr("dummy ssh-key"), + Password: common.ToPtr("$6$secret-password"), + Groups: &[]string{"users", "wheel"}, }}, Packages: &[]string{"bash", "tmux"}, Containers: &[]Container{ @@ -264,6 +266,25 @@ func TestGetBlueprintFromCustomizations(t *testing.T) { assert.Equal(t, GetTestBlueprint(), bp) } +func TestBlueprintFromCustomizationPasswordsHashed(t *testing.T) { + // Construct the compose request with customizations + plaintextPassword := "secret-password" + cr := ComposeRequest{Customizations: &Customizations{ + Users: &[]User{ + User{ + Name: "admin", + Key: common.ToPtr("dummy ssh-key"), + Password: common.ToPtr(plaintextPassword), + Groups: &[]string{"users", "wheel"}, + }}, + }} + + bp, err := cr.GetBlueprintFromCustomizations() + require.Nil(t, err) + // Passwords should be hashed + assert.NotEqual(t, plaintextPassword, bp.Customizations.User[0].Password) +} + func TestGetBlueprintFromCompose(t *testing.T) { // Empty request should return empty blueprint cr := ComposeRequest{} @@ -300,9 +321,10 @@ func TestGetBlueprintFromCompose(t *testing.T) { Customizations: &BlueprintCustomizations{ User: &[]BlueprintUser{ { - Name: "admin", - Key: common.ToPtr("dummy ssh-key"), - Groups: &[]string{"users", "wheel"}, + Name: "admin", + Key: common.ToPtr("dummy ssh-key"), + Password: common.ToPtr("$6$secret-password"), + Groups: &[]string{"users", "wheel"}, }}, Directories: &[]Directory{ Directory{ diff --git a/internal/cloudapi/v2/openapi.v2.gen.go b/internal/cloudapi/v2/openapi.v2.gen.go index ef12c1c0ba..4802c57d4e 100644 --- a/internal/cloudapi/v2/openapi.v2.gen.go +++ b/internal/cloudapi/v2/openapi.v2.gen.go @@ -1069,6 +1069,11 @@ type User struct { Groups *[]string `json:"groups,omitempty"` Key *string `json:"key,omitempty"` Name string `json:"name"` + + // If the password starts with $6$, $5$, or $2b$ it will be stored as + // an encrypted password. Otherwise it will be treated as a plain text + // password. + Password *string `json:"password,omitempty"` } // Page defines model for page. @@ -1350,178 +1355,178 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "AAA=", + "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", + "Q7gxabkAAA==", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/internal/cloudapi/v2/openapi.v2.yml b/internal/cloudapi/v2/openapi.v2.yml index aa7fc72ecd..e6f4441af9 100644 --- a/internal/cloudapi/v2/openapi.v2.yml +++ b/internal/cloudapi/v2/openapi.v2.yml @@ -1764,6 +1764,13 @@ components: key: type: string example: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINrGKErMYi+MMUwuHaRAJmRLoIzRf2qD2dD5z0BTx/6x" + password: + type: string + format: password + description: | + If the password starts with $6$, $5$, or $2b$ it will be stored as + an encrypted password. Otherwise it will be treated as a plain text + password. BlueprintUser: type: object additionalProperties: false