Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat]: SCIM Client support (Outbound provisioning) #1009

Open
polarathene opened this issue Jul 8, 2024 · 3 comments
Open

[Feat]: SCIM Client support (Outbound provisioning) #1009

polarathene opened this issue Jul 8, 2024 · 3 comments
Labels
enhancement New feature or request

Comments

@polarathene
Copy link

polarathene commented Jul 8, 2024

🚀 Feature

Feb 2024 blog post: https://supertokens.com/blog/what-is-scim-provisioning

A SCIM client is probably more effort to support. I don't use SuperTokens myself, so perhaps wait until enough user interest is expressed with 👍 reactions.

Implementation details

For reference:

  • SCIM Server (exposes the SCIM API endpoints, like the standard /Users and /Groups)
    • A SCIM client connects to the SCIM Server via the endpoints to provision users and groups.
    • SCIM servers may also be referred to as "inbound provisioning", or a "Service Provider" (usually SaaS / cloud apps, but could also be an IdP_),
    • Note, it can be quite common for an SP to have varying limitations in their SCIM spec support / implementation. Examples: AWS IAM Identity Center (additionally: 1, 2), Casdoor, Gitlab, Okta, Sentry, Slack.
  • SCIM Client (source of truth for users/groups for SCIM servers to be provisioned/deprovisioned with)
    • SCIM clients may be referred to as "outbound provisioning".
    • In this scenario, a client like SuperTokens ensures downstream apps are provisioned with users/groups, along with any updates being synced to those downstreams (aka "Service Providers" / SPs).
    • A SCIM Client supports attribute mapping, to map it's internal equivalent attributes to those of the SCIM endpoint.

There are also services that map a SCIM endpoint to an alternative API of a service which lacks support for SCIM. These vary in naming too as SCIM bridges / connectors / facades / gateways.

@polarathene polarathene added the enhancement New feature or request label Jul 8, 2024
@rishabhpoddar
Copy link
Contributor

We have an example app that shows how SCIM can be added: https://github.com/supertokens/jackson-supertokens-express

@polarathene
Copy link
Author

polarathene commented Jul 8, 2024

I'm aware, but that is for supporting SuperTokens as a Service Provider (SCIM server, provides the API endpoints to provision users/groups to SuperTokens, aka inbound provisioning):

Once created, you will see a URL at the bottom of the screen: http://localhost:5225/api/scim/oauth/authorize?directoryId=
You need to navigate to that on your browser and login as the admin of your Google workspaces account.
This will generate an access and refresh token which can then be used by BoxyHQ to sync users from Google Workspaces.


SCIM Client support (outbound provisioning) is different.

If you were to provision users from SuperTokens (now acting as a SCIM Client) into a SP (services with SCIM server support like Okta, Sentry, Slack, AWS IAM Identity Center), that would all be the other way around (SuperTokens calls those services SCIM API, mapping it's internal representation of equivalent SCIM attributes).

@rishabhpoddar
Copy link
Contributor

Right. Makes sense. Thanks for opening this issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants