Sandor Molnar created KNOX-3539:
-----------------------------------
Summary: Add an option to lowercase the user ID in the LDAP proxy
roles-lookup interceptor
Key: KNOX-3539
URL: https://issues.apache.org/jira/browse/KNOX-3539
Project: Apache Knox
Issue Type: Task
Components: LDAP, Server
Affects Versions: 3.0.0
Reporter: Sandor Molnar
Assignee: Sandor Molnar
Fix For: 3.1.0
The LDAP proxy's {{LDAPRolesLookupInterceptor}} builds the user ID for the
roles lookup from the {{uid}} attribute of the entry returned by the backend
directory. For Active Directory backends, uid holds {{sAMAccountName}}. AD
matches this attribute case-insensitively, but the value comes back in its
canonical case (e.g. {{Admin}}). Whatever case the client searched with
({{admin}}, {{ADMIN}}), the roles-lookup service receives {{Admin}}.
If the roles backend stores and matches user IDs case-sensitively and has role
memberships keyed on a different case (e.g. the login name as typed), the
lookup finds nothing and the user gets no roles.
*Proposal*: add a new gateway configuration property:
{code}
gateway.ldap.roles.lookup.lowercase.user.id = false (default)
{code}
When {{true}}, the interceptor lowercases the user ID before calling
{{LDAPRolesLookupService.lookupRoles()}}. Combined with
{{expression.principal.mapping = (lowercase username)}} in the
{{identity-assertion}} provider, the asserted principal and the roles-lookup
key are then always the same case. The default (false) keeps the current
behavior.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)