Re: [scim] ExternalId Case Sensitivity

Phillip Hunt <> Wed, 11 March 2020 18:25 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 3AAD83A10CC for <>; Wed, 11 Mar 2020 11:25:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.896
X-Spam-Status: No, score=-1.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id sPK7ltPgIQ1I for <>; Wed, 11 Mar 2020 11:25:12 -0700 (PDT)
Received: from ( [IPv6:2607:f8b0:4864:20::42a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id C1CD23A0140 for <>; Wed, 11 Mar 2020 11:25:08 -0700 (PDT)
Received: by with SMTP id x2so1426831pfn.9 for <>; Wed, 11 Mar 2020 11:25:08 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20150623; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=jugPT61jKYS8XK+qkrLQyJykeBHqyXkKn2vcjRJY+5Y=; b=XZ7cbMvn5CVai4UBgd4aMY+e5rNApWJpczfeSQk/b2mRfxChBLeCm7LnybTEtapu31 lmtLpb136MBd5Mki8CxaxND8j4DNzWPxw+NZHT2XuAlTg1HQVVwRhgPBRECl/hm9pmsS 83usKOGrbDXLA+ixh2j4UBbGEIF3vtOZHFHVOO055EQGFV/YQfkXROUex/3uQf4kQ7Cy eNnt9OqY6K4ndu9Lo0gWv/wvVti445f6O0gzuKRrNKLWErZbLYmi+DBpZm2tBKSyHkxb XgAFGLQ2UCcYwteSJJ89X0QGhY526rU0pWNoWJqSDm6CfVLtQJK+SKoH6YsFLHC3Vz9r 5snA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=jugPT61jKYS8XK+qkrLQyJykeBHqyXkKn2vcjRJY+5Y=; b=Lv6/gpytnzTKGZJkfK4pdHBsHZFUc8fFs+e5+aiAi1LAylxzryn57TBDaa923X/gqO 8/UFzQ6U9dlj5tenB7zicmKJmJSRVHuYV+Qr3A+C5vkcmumxhjurhxtqe9Y0VsdbdJTe +s3Cdvd8O95VAzqSUWuDK8FWymhMuSfBfvYxdWYh8zNGSoQZlMONVgvQwn07IwFIeaVO 8jQZ0c0SbaHFAYOJeZIuzMYjAL82+3h2ftLKv2VuhElWAgz0zXjqP8P/arZNIEPyj01d 4tRtlgirTbikaLqH9+N/SJKIc/3U8capRSN16LDjJcS0CeGqqewtpHYOSNFZqFbBIaXl dg5Q==
X-Gm-Message-State: ANhLgQ3T73SJvw279idRj+G8ZiSVDujf4i9XtHKfW8TUWfjRHLIgjeBk dX3Xm7sXqcUb3sHi2SWbiPpZCQ==
X-Google-Smtp-Source: =?utf-8?q?ADFU+vscD2okRsV60pULmMVrl+cI5Zq1ACdtLYT1gUKV?= =?utf-8?q?pKbgPJrb7AGnj7+zPhjIGnP/YanileQspw=3D=3D?=
X-Received: by 2002:a63:b04f:: with SMTP id z15mr3960118pgo.58.1583951108090; Wed, 11 Mar 2020 11:25:08 -0700 (PDT)
Received: from ( [2001:569:79bc:100:7c37:eabc:16be:5eba]) by with ESMTPSA id s20sm6051475pfm.154.2020. (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 11 Mar 2020 11:25:07 -0700 (PDT)
From: Phillip Hunt <>
Message-Id: <>
Content-Type: multipart/alternative; boundary="Apple-Mail=_76AD79FD-1FFF-441E-B180-3FD872FEA7B7"
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
Date: Wed, 11 Mar 2020 11:25:06 -0700
In-Reply-To: <>
To: Shelley <>
References: <>
X-Mailer: Apple Mail (2.3445.9.1)
Archived-At: <>
Subject: Re: [scim] ExternalId Case Sensitivity
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Simple Cloud Identity Management BOF <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 11 Mar 2020 18:25:14 -0000


This issue and the approach taken had more to do with dealing with legacy systems where some were case-insensistive. Some of the language introduced was to heard implementors toward a case exact approach.

As a general rule, if you are writing a client query:
* if schema says an attribute is caseExact “false", then you can expect matches on filters that are not exact matches and the resulting record may have case differences. 

Phil Hunt

> On Mar 11, 2020, at 6:25 AM, Shelley <> wrote:
> Section 3.1 indicates that "externalId" has "caseExact" as "true". However, I would like our service provider's "externalId" attribute to be case-insensitive, but since "externalId" is a "Common Attribute", service providers cannot change its attribute characteristics [1]:
> For backward compatibility, some existing schema definitions MAY list
> common attributes as part of the schema.  The attribute
> characteristics (see Section 2.2) listed here SHALL take precedence
> over older definitions that may be included in existing schemas.
> I have a few related questions:
> What was the reasoning behind making externalId caseExact?
> From the perspective of case preservation, I can understand the use of "caseExact" for externalIds; however, for filtering, it still seems appropriate to search case-insensitively.
> I've seen some past discussions where "externalId" had "caseExact" as "false" (e.g. [2,3]), but it seems to be "true" in the final RFC, and I was unable to trace that decision back to a discussion.
> If I'm not mistaken, externalId was case-insensitive implicitly in SCIM 1.1 as well.
> More generally, perhaps future-thinking (unless this has already been discussed), perhaps "caseExact" may be over-simplified? There are potentially 3 different uses for caseExact, and they may not all share a value:
> Case Preservation: Must the server preserve the case of the attribute?
> Uniqueness: If the attribute is unique, must it be case-sensitively unique?
> Filtering: Should the attribute be filtered case-sensitively? (Perhaps allowing clients to specify case-sensitive filter operators may be more appropriate than making this part of the attribute's characteristics?)
> Should service providers be allowed to change the "common attribute" characteristics to account for cases such as these? The spec currently seems to forbid this.
> [1] <>
> [2] <>
> [3] <>
> _______________________________________________
> scim mailing list