Azure/EntraID non-compliance with SCIM specification

KT 46 Reputation points
2023-12-27T14:27:45.7366667+00:00

I've noticed two areas where EntraID is not compliant with the SCIM specification. These cause any connection to a SCIM server through EntraID to send requests that may not be handled by the SCIM server unless specifically modified to handle the special cases.

  1. Manager mapping is incorrect in default enterprise application settings

When setting up a new enterprise application, EntraID uses urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager instead of urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager.value when mapping managers for a user. This is incorrect, as the SCIM specification states that manager.value is the valid and expected property: https://datatracker.ietf.org/doc/html/rfc7643#section-4.3. This is modifiable in the attribute mappings of the enterprise application, but the default should be compliant with the SCIM specification. SCIM servers should NOT have to handle the incorrect mapping, and users should NOT have to correct the mapping when setting up a new application.

  1. Group member "remove" operations are an incorrect form
    The SCIM spec (https://datatracker.ietf.org/doc/html/rfc7644#section-3.5.2.2) states that a request removing a member from a group should be of the form:
   PATCH /Groups/acbf3ae7-8463-...-9b4da3f908ce
   Host: example.com
   Accept: application/scim+json
   Content-Type: application/scim+json
   Authorization: Bearer h480djs93hd8
   If-Match: W/"a330bc54f0671c9"

   {
     "schemas":
      ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
     "Operations":[{
       "op":"remove",
       "path":"members[value eq \"2819c223-7f76-...413861904646\"]"
     }]
   }

with op & path, and the value being removed specified in the path.
However, EntraID's Group member remove requests are in the form that is valid for adding members but not removing. For example, the following request which specifies op, path, and value is valid for adding a member, but not for removing a member:

   PATCH /Groups/acbf3ae7-8463-...-9b4da3f908ce
   Host: example.com
   Accept: application/scim+json
   Content-Type: application/scim+json
   Authorization: Bearer h480djs93hd8
   If-Match: W/"a330bc54f0671c9"

   { "schemas":
      ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
     "Operations":[
       {
        "op":"remove",
        "path":"members",
        "value":[
         {
           "display": "Babs Jensen",
           "value": "2819c223-7f76-453a-919d-413861904646"
         }
        ]
       }
     ]
   }

A SCIM server that is compliant with the SCIM specification should not have to handle this special case of request. Requests of this kind could (and should) be considered invalid requests.

Are there any plans to address these breaks from the SCIM specification to allow EntraID to be better supported with regards to SCIM?

Microsoft Security | Microsoft Entra | Microsoft Entra ID
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. JamesTran-MSFT 37,226 Reputation points Microsoft Employee Moderator
    2023-12-27T19:13:39.2266667+00:00

    @KT

    Thank you for your detailed post and identifying the two areas you noticed where MS Entra ID is not compliant with the SCIM specification(s).

    • I've reached out to our SCIM engineering team so they can take a closer look into your issue and will update as soon as possible.

    In the meantime, I'll summarize your issue below for my understanding and to ensure I didn't miss anything.

    Manager mapping is incorrect in default enterprise application settings.

    When setting up a new enterprise application, EntraID uses urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager instead of urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:manager.value when mapping managers for a user. This is incorrect, as the SCIM specification states that manager.value is the valid and expected property: https://datatracker.ietf.org/doc/html/rfc7643#section-4.3. This is modifiable in the attribute mappings of the enterprise application, but the default should be compliant with the SCIM specification. SCIM servers should NOT have to handle the incorrect mapping, and users should NOT have to correct the mapping when setting up a new application.

    Group member "remove" operations are an incorrect form.

    The SCIM spec (https://datatracker.ietf.org/doc/html/rfc7644#section-3.5.2.2) states that a request removing a member from a group should be of the form.... with op & path, and the value being removed specified in the path. However, EntraID's Group member remove requests are in the form that is valid for adding members but not removing. For example...

    Additional Links:

    I hope this helps!

    If you have any other questions, please let me know. Thank you for your time and patience throughout this issue.


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.