outposts/ldap: Fix more case sensitivity issues. (#2144)

This commit is contained in:
Ilya Kogan
2022-01-25 05:27:27 -05:00
committed by GitHub
parent 1c2b452406
commit 947ecec02b
7 changed files with 44 additions and 37 deletions

View File

@ -2,6 +2,7 @@ package utils
import (
"reflect"
"strings"
"github.com/nmcclain/ldap"
log "github.com/sirupsen/logrus"
@ -117,3 +118,7 @@ func GetContainerEntry(filterOC string, dn string, ou string) *ldap.Entry {
return nil
}
func HasSuffixNoCase(s1 string, s2 string) bool {
return strings.HasSuffix(strings.ToLower(s1), strings.ToLower(s2))
}

View File

@ -1,6 +1,8 @@
package utils
import (
"strings"
goldap "github.com/go-ldap/ldap/v3"
ber "github.com/nmcclain/asn1-ber"
"github.com/nmcclain/ldap"
@ -41,7 +43,7 @@ func parseFilterForGroupSingle(req api.ApiCoreGroupsListRequest, f *ber.Packet)
// Switch on type of the value, then check the key
switch vv := v.(type) {
case string:
switch k {
switch strings.ToLower(k.(string)) {
case "cn":
return req.Name(vv), false
case "member":
@ -54,7 +56,7 @@ func parseFilterForGroupSingle(req api.ApiCoreGroupsListRequest, f *ber.Packet)
username := userDN.RDNs[0].Attributes[0].Value
// If the DN's first ou is virtual-groups, ignore this filter
if len(userDN.RDNs) > 1 {
if userDN.RDNs[1].Attributes[0].Value == constants.OUVirtualGroups || userDN.RDNs[1].Attributes[0].Value == constants.OUGroups {
if strings.EqualFold(userDN.RDNs[1].Attributes[0].Value, constants.OUVirtualGroups) || strings.EqualFold(userDN.RDNs[1].Attributes[0].Value, constants.OUGroups) {
// Since we know we're not filtering anything, skip this request
return req, true
}