diff --git a/apis/management.cattle.io/v3/authn_types.go b/apis/management.cattle.io/v3/authn_types.go index 8fdea8e2..35fd3890 100644 --- a/apis/management.cattle.io/v3/authn_types.go +++ b/apis/management.cattle.io/v3/authn_types.go @@ -300,3 +300,7 @@ type PingConfig struct { type ADFSConfig struct { SamlConfig `json:",inline" mapstructure:",squash"` } + +type KeyCloakConfig struct { + SamlConfig `json:",inline" mapstructure:",squash"` +} diff --git a/apis/management.cattle.io/v3/schema/schema.go b/apis/management.cattle.io/v3/schema/schema.go index 9ecae767..145b449a 100644 --- a/apis/management.cattle.io/v3/schema/schema.go +++ b/apis/management.cattle.io/v3/schema/schema.go @@ -416,34 +416,26 @@ func authnTypes(schemas *types.Schemas) *types.Schemas { MustImport(&Version, v3.FreeIpaTestAndApplyInput{}). // Saml Config // Ping-Saml Config - MustImportAndCustomize(&Version, v3.PingConfig{}, func(schema *types.Schema) { - schema.BaseType = "authConfig" - schema.ResourceActions = map[string]types.Action{ - "disable": {}, - "testAndEnable": { - Input: "samlConfigTestInput", - Output: "samlConfigTestOutput", - }, - } - schema.CollectionMethods = []string{} - schema.ResourceMethods = []string{http.MethodGet, http.MethodPut} - }). - MustImportAndCustomize(&Version, v3.ADFSConfig{}, func(schema *types.Schema) { - schema.BaseType = "authConfig" - schema.ResourceActions = map[string]types.Action{ - "disable": {}, - "testAndEnable": { - Input: "samlConfigTestInput", - Output: "samlConfigTestOutput", - }, - } - schema.CollectionMethods = []string{} - schema.ResourceMethods = []string{http.MethodGet, http.MethodPut} - }). + MustImportAndCustomize(&Version, v3.PingConfig{}, configSchema). + MustImportAndCustomize(&Version, v3.ADFSConfig{}, configSchema). + MustImportAndCustomize(&Version, v3.KeyCloakConfig{}, configSchema). MustImport(&Version, v3.SamlConfigTestInput{}). MustImport(&Version, v3.SamlConfigTestOutput{}) } +func configSchema(schema *types.Schema) { + schema.BaseType = "authConfig" + schema.ResourceActions = map[string]types.Action{ + "disable": {}, + "testAndEnable": { + Input: "samlConfigTestInput", + Output: "samlConfigTestOutput", + }, + } + schema.CollectionMethods = []string{} + schema.ResourceMethods = []string{http.MethodGet, http.MethodPut} +} + func userTypes(schema *types.Schemas) *types.Schemas { return schema. MustImportAndCustomize(&Version, v3.Preference{}, func(schema *types.Schema) { diff --git a/apis/management.cattle.io/v3public/authn_types.go b/apis/management.cattle.io/v3public/authn_types.go index d8c1973a..9ab78e1d 100644 --- a/apis/management.cattle.io/v3public/authn_types.go +++ b/apis/management.cattle.io/v3public/authn_types.go @@ -91,6 +91,10 @@ type ADFSProvider struct { SamlProvider `json:",inline"` } +type KeyCloakProvider struct { + SamlProvider `json:",inline"` +} + type SamlLoginInput struct { FinalRedirectURL string `json:"finalRedirectUrl"` } diff --git a/apis/management.cattle.io/v3public/schema/public_schema.go b/apis/management.cattle.io/v3public/schema/public_schema.go index 97af2369..1026a2fe 100644 --- a/apis/management.cattle.io/v3public/schema/public_schema.go +++ b/apis/management.cattle.io/v3public/schema/public_schema.go @@ -104,6 +104,17 @@ func authProvidersTypes(schemas *types.Schemas) *types.Schemas { schema.CollectionMethods = []string{} schema.ResourceMethods = []string{http.MethodGet} }). + MustImportAndCustomize(&PublicVersion, v3public.KeyCloakProvider{}, func(schema *types.Schema) { + schema.BaseType = "authProvider" + schema.ResourceActions = map[string]types.Action{ + "login": { + Input: "samlLoginInput", + Output: "samlLoginOutput", + }, + } + schema.CollectionMethods = []string{} + schema.ResourceMethods = []string{http.MethodGet} + }). MustImport(&PublicVersion, v3public.SamlLoginInput{}). MustImport(&PublicVersion, v3public.SamlLoginOutput{}). // OpenLdap provider