diff --git a/ldap/server.go b/ldap/server.go index f67853a3..a311213f 100644 --- a/ldap/server.go +++ b/ldap/server.go @@ -53,7 +53,7 @@ func handleBind(w ldap.ResponseWriter, m *ldap.Message) { } bindPassword := string(r.AuthenticationSimple()) - bindUser, err := object.CheckUserPassword(object.CasdoorOrganization, bindUsername, bindPassword, "en") + bindUser, err := object.CheckUserPassword(bindOrg, bindUsername, bindPassword, "en") if err != "" { log.Printf("Bind failed User=%s, Pass=%#v, ErrMsg=%s", string(r.Name()), r.Authentication(), err) res.SetResultCode(ldap.LDAPResultInvalidCredentials) diff --git a/ldap/util.go b/ldap/util.go index 499e3757..ecc32699 100644 --- a/ldap/util.go +++ b/ldap/util.go @@ -57,11 +57,18 @@ func getNameAndOrgFromFilter(baseDN, filter string) (string, string, int) { func getUsername(filter string) string { nameIndex := strings.Index(filter, "cn=") if nameIndex == -1 { - return "*" + nameIndex = strings.Index(filter, "uid=") + if nameIndex == -1 { + return "*" + } else { + nameIndex += 4 + } + } else { + nameIndex += 3 } var name string - for i := nameIndex + 3; filter[i] != ')'; i++ { + for i := nameIndex; filter[i] != ')'; i++ { name = name + string(filter[i]) } return name @@ -125,6 +132,8 @@ func getAttribute(attributeName string, user *object.User) message.AttributeValu return message.AttributeValue(user.Name) case "email": return message.AttributeValue(user.Email) + case "mail": + return message.AttributeValue(user.Email) case "mobile": return message.AttributeValue(user.Phone) case "userPassword":