Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion ldapauth.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ type Config struct {
ForwardExtraLdapHeaders bool `json:"forwardExtraLdapHeaders,omitempty" yaml:"forwardExtraLdapHeaders,omitempty"`
WWWAuthenticateHeader bool `json:"wwwAuthenticateHeader,omitempty" yaml:"wwwAuthenticateHeader,omitempty"`
WWWAuthenticateHeaderRealm string `json:"wwwAuthenticateHeaderRealm,omitempty" yaml:"wwwAuthenticateHeaderRealm,omitempty"`
EnableCustomGroupFilter bool `json:"enableCustomGroupFilter,omitempty" yaml:"enableCustomGroupFilter,omitempty"`
CustomGroupFilter string `json:"customGroupFilter,omitempty" yaml:"customGroupFilter,omitempty"`
EnableNestedGroupFilter bool `json:"enableNestedGroupsFilter,omitempty" yaml:"enableNestedGroupsFilter,omitempty"`
AllowedGroups []string `json:"allowedGroups,omitempty" yaml:"allowedGroups,omitempty"`
AllowedUsers []string `json:"allowedUsers,omitempty" yaml:"allowedUsers,omitempty"`
Expand Down Expand Up @@ -113,6 +115,8 @@ func CreateConfig() *Config {
ForwardExtraLdapHeaders: false,
WWWAuthenticateHeader: true,
WWWAuthenticateHeaderRealm: "",
EnableCustomGroupFilter: false,
CustomGroupFilter: "",
EnableNestedGroupFilter: false,
AllowedGroups: nil,
AllowedUsers: nil,
Expand Down Expand Up @@ -424,6 +428,10 @@ func LdapCheckUserGroups(conn *ldap.Conn, config *Config, entry *ldap.Entry, use
"(member={{.UserDN}})" +
"(uniqueMember={{.UserDN}})" +
"(memberUid={{.Username}})" +
"{{if .EnableCustomGroupFilter}}" +
"({{.CustomGroupFilter}}={{.UserDN}})" +
"({{.CustomGroupFilter}}={{.Username}})" +
"{{end}}" +
"{{if .EnableNestedGroupFilter}}" +
"(member:1.2.840.113556.1.4.1941:={{.UserDN}})" +
"{{end}}" +
Expand All @@ -435,7 +443,9 @@ func LdapCheckUserGroups(conn *ldap.Conn, config *Config, entry *ldap.Entry, use
UserDN string
Username string
EnableNestedGroupFilter bool
}{ldap.EscapeFilter(entry.DN), ldap.EscapeFilter(username), config.EnableNestedGroupFilter})
EnableCustomGroupFilter bool
CustomGroupFilter string
}{ldap.EscapeFilter(entry.DN), ldap.EscapeFilter(username), config.EnableNestedGroupFilter, config.EnableCustomGroupFilter, config.CustomGroupFilter})

LoggerDEBUG.Printf("Group Filter: '%s'", group_filter.String())

Expand Down
12 changes: 12 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,18 @@ _Optional, Default: `""`_

The name of the realm to specify in the `WWW-Authenticate` header. This option is ineffective unless the `wwwAuthenticateHeader` option is set to true.

##### `enableCustomGroupFilter`

_Optional, Default: `false`_

If you need custom filters in addition to `(|(member=?)(uniqueMember=?)(memberUid=?))`, enable this option and set `customGroupFilter` option.

##### `customGroupFilter`

_Optional, Default: `""`_

Custom filters in addition to `(|(member=?)(uniqueMember=?)(memberUid=?))`. This option is ineffective unless the `enableCustomGroupFilter` option is set to true.

##### `enableNestedGroupFilter`

_Optional, Default: `false`_
Expand Down
Loading