Subject: [scim] ExternalId Case Sensitivity

From: Shelley <[email-masked]>
Date: Wed, 11 Mar 2020 08:25:51 -0500

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] https://tools.ietf.org/html/rfc7643#section-3.1
[2] https://mailarchive.ietf.org/arch/msg/scim/ev7DC2ZUTtaIam4RmcbhSyCF9xE/
[3] https://mailarchive.ietf.org/arch/msg/scim/NgMipeLaeLlOwpPkrg2Jak7W2-M/

---

From: Phillip Hunt <[email-masked]>
Date: Wed, 11 Mar 2020 11:25:06 -0700

Shelley,

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
@independentid
[email-masked]

> On Mar 11, 2020, at 6:25 AM, Shelley <[email-masked]> 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]:
> 
> 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] https://tools.ietf.org/html/rfc7643#section-3.1 <https://tools.ietf.org/html/rfc7643#section-3.1>
> [2] https://mailarchive.ietf.org/arch/msg/scim/ev7DC2ZUTtaIam4RmcbhSyCF9xE/ <https://mailarchive.ietf.org/arch/msg/scim/ev7DC2ZUTtaIam4RmcbhSyCF9xE/>
> [3] https://mailarchive.ietf.org/arch/msg/scim/NgMipeLaeLlOwpPkrg2Jak7W2-M/ <https://mailarchive.ietf.org/arch/msg/scim/NgMipeLaeLlOwpPkrg2Jak7W2-M/>
> _______________________________________________
> scim mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/scim