SCIM: System for Cross-Domain Identity Management
scim.cloud
scim.cloud
The biggest oversight when SCIM was designed was the expectation of an inbound connection from the provisioning software (e.g. Azure) to the SAAS or similar. This means that in hybrid environments (e.g. most large enterprises), you are having to whitelist umpteen different ip ranges from the Cloud Provider. Some IdP’s have solved this with a local agent you install on-premise to reverse the connection, but Azure is not one of these.
But this is beside the point. IP whitelisting is problematic for many reasons, and big enterprise sometimes simply refuses to do it. That’s not to say that SCIM is reliant on whitelisting for authentication, it isn’t. However, any modern design of this would have made the connection outbound from the thing being provisioned.
in this case, as the value is in the reply data it’s not really feasible (unless you are a three letter agency)
Hang on... zoom and enhance!
> It has id, externalId and meta as attribute
Uhhh, so a SCIM object can only only 1 `externalId` value?
...that's a deal-killer right there because Federated Identity schemes will need to handle users that have multiple external identity references (e.g. think how StackOverflow lets the same SO User login using Google, GitHub, even Facebook (in 2024?!) - how is that meant to be represented by SCIM?
(I'll confess that I've only skimmed the SCIM docs; if I'm mistaken then I look forward to being told I'm wrong because it means I can learn something new today).
Like with other enterprise software (that I've worked with), SCIM's externalId is optional - and you can see in the examples that it's usually duplicating some other field, like the username or an employee number. That optionality is a double-edged sword, though; if you're integrating software that expects an externalId to be set, then you gotta make sure it's indeed being set. Back when I was doing NetSuite administration/development full-time that bit me in the ass on many occasions; middleware would be opinionated about the externalId being set, and I'd have to make sure that was getting populated from whatever record-specific unique ID (e.g. tranId for transactions).
If you’re federating with multiple disparate providers, you should be using something like Okta or Keycloak as a concentrator so the things that need to consume your directory service only have to consume one.