diff --git a/configuration/validator/authentication.go b/configuration/validator/authentication.go index b3a8a8c2..c81f328b 100644 --- a/configuration/validator/authentication.go +++ b/configuration/validator/authentication.go @@ -2,20 +2,42 @@ package validator import ( "errors" + "fmt" + "strings" "github.com/clems4ever/authelia/configuration/schema" ) +var ldapProtocolPrefix = "ldap://" + func validateFileAuthenticationBackend(configuration *schema.FileAuthenticationBackendConfiguration, validator *schema.StructValidator) { if configuration.Path == "" { validator.Push(errors.New("Please provide a `path` for the users database in `authentication_backend`")) } } +func validateLdapURL(url string, validator *schema.StructValidator) string { + if strings.HasPrefix(url, ldapProtocolPrefix) { + url = url[len(ldapProtocolPrefix):] + } + + portColons := strings.Index(url, ":") + + // if no port is provided, we provide the default LDAP port + // TODO(c.michaud): support LDAP over TLS. + if portColons == -1 { + url = url + ":389" + } + return url +} + func validateLdapAuthenticationBackend(configuration *schema.LDAPAuthenticationBackendConfiguration, validator *schema.StructValidator) { if configuration.URL == "" { validator.Push(errors.New("Please provide a URL to the LDAP server")) + } else { + configuration.URL = validateLdapURL(configuration.URL, validator) } + fmt.Println(configuration.URL) if configuration.User == "" { validator.Push(errors.New("Please provide a user name to connect to the LDAP server")) @@ -30,11 +52,11 @@ func validateLdapAuthenticationBackend(configuration *schema.LDAPAuthenticationB } if configuration.UsersFilter == "" { - configuration.UsersFilter = "cn={0}" + configuration.UsersFilter = "(cn={0})" } if configuration.GroupsFilter == "" { - configuration.GroupsFilter = "member={dn}" + configuration.GroupsFilter = "(member={dn})" } if configuration.GroupNameAttribute == "" { diff --git a/test/suites/high-availability/config.yml b/test/suites/high-availability/config.yml index 11b7a621..e975e33b 100644 --- a/test/suites/high-availability/config.yml +++ b/test/suites/high-availability/config.yml @@ -44,7 +44,7 @@ authentication_backend: # production. ldap: # The url of the ldap server - url: 127.0.0.1:389 + url: ldap://127.0.0.1 # The base dn for every entries base_dn: dc=example,dc=com