Re: [ldapext] Case sensitivity summary

Simo Sorce <> Fri, 04 December 2015 15:40 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id A27131A8855 for <>; Fri, 4 Dec 2015 07:40:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -6.611
X-Spam-Status: No, score=-6.611 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, MIME_8BIT_HEADER=0.3, RCVD_IN_DNSWL_HI=-5, SPF_HELO_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id T6dSF--0wm0F for <>; Fri, 4 Dec 2015 07:40:13 -0800 (PST)
Received: from ( []) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id E12F01A87F1 for <>; Fri, 4 Dec 2015 07:40:12 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTPS id 4FE478F28A; Fri, 4 Dec 2015 15:40:12 +0000 (UTC)
Received: from ([]) by (8.14.4/8.14.4) with ESMTP id tB4FeAOs006204 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 4 Dec 2015 10:40:11 -0500
Message-ID: <>
From: Simo Sorce <>
To: Michael Ströder <>
Date: Fri, 04 Dec 2015 10:40:10 -0500
In-Reply-To: <>
References: <> <>
Organization: Red Hat, Inc.
Content-Type: text/plain; charset="UTF-8"
Mime-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 2.68 on
Archived-At: <>
Cc: LDAP Extensions list <>, Andrew Findlay <>
Subject: Re: [ldapext] Case sensitivity summary
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: LDAP Extension Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 04 Dec 2015 15:40:18 -0000

On Fri, 2015-12-04 at 15:00 +0100, Michael Ströder wrote:
> Andrew Findlay wrote:
> > We are not going to define a standard that forces everyone to do everything
> > 'right' while providing interworking of differing systems. It is simply
> > not possible.
> That perfectly summarizes this topic.
> Thanks Andrew, for this clear statement.
> Let's keep the scope right.
> > Overall I think we are heading for something like this:
> > 
> > 1)	Usernames and groupnames should have caseIgnoreMatch syntax
> > 
> > 2)	Usernames and groupnames should preferably be stored in lower-case in
> > 	cultures where that has meaning. Remember that LDAP is case-preserving
> > 	even for case-insensitive attributes.
> > 
> > 3)	Systems that are internally case-sensitive should take extra care
> > 	when using data from LDAP.
> > 
> > I know this conflicts with Mark's wish to be able to import existing
> > NIS data unchanged to cope with weird existing situations, but I see that 
> > as a special case that may be better handled in another way.
> +1 !!!
> (That's pretty much exactly what I planned to suggest.)
> > Note that the above discussion *only* applies to usernames and groupnames.
> > Unix-specific mappings such as automount maps are a different issue.
> automount maps are maybe a similar topic like generating 'homeDirectory' values
> for $HOME on case-sensitive file-systems based on user names.  For this
> RECOMMENDing that usernames are normalized to lower-case is really helpful.

This is exactly what we did in FreeIPA too, we automatically convert the
user name entered in lower case. We have no issues with "uncertain
rules" about casefolding because we restricted the valid charset to
Unicode and within unicode casfolding *to* lower case is not ambiguous
and part of the standard.
I think we further limit the interface to "Western charset" (read
printable ASCII chars), but that is a restriction we can and will relax
at some point.

> Regarding service names:
> (Personally I never saw any customer LDAP deployment storing a services map.)
> 1. Service names are used in DNS RRs (SRV, DANE, etc.) and those DNS labels are
> definitely supposed to be treated case-insensitive.

There are odd things in the wild, so you need to be at least
case-preserving, both for user names and services.

> 2. Jordan pointed out RFC 6335.
> => I concur with Jordan: Service names MUST be treated case-insensitive.
> Probably recommending in an implementation note to normalize values to
> lower-case seems also to be a good idea.
> => People actually using case-sensitive service names to address *different*
> services MUST clean up their local mess. But they likely have to do that anyway.

ACK, maintaining broken systems may seem the only way for some
organizations due to the daunting task and inter-dependencies that makes
a clean up really hard. I have personally witnessed herculean efforts to
migrate several hundreds diverged NIS domains into a single directory,
and it ain't pretty. Especially if you have terabytes of data and
numerous files with permissions to deal with. But the problem has always
mostly been on uidNumber and gidNumber consolidation, usually
name-mismatches have been mush easier to deal with because it is easy to
remap usernames locally.


Simo Sorce * Red Hat, Inc * New York