description : Differences between several centralized user management protocols in a world of web application hosting that show **SCIM is an upgrade.**
color : green
weight : 4
---
### Others managmeent protocols
{{<switch-boxtitle="Ldap">}}
With this LDAP approach **everything is centralized** (except authorization).
**Everything speaks the LDAP protocol langage.** Identities are stored in an LDAP directory, which is provisioned via LDAP protocol. Authentication is done by the application that asks the user’s credentials and validates them against the directory via LDAP protocol.
{{</switch-box>}}
{{<switch-boxtitle="Ldap+SSO">}}
This architecture **tackles the two main drawbacks of the only LDAP approach** : the missing single sign-on and the security vulnerability. **Authentication is delegated to other web protocols** (like OAuth, OIDC or SAML). This way, the user logs in only once to the identity provider.
**SCIM to solve the remaining problems** via a simple standard web api. This infrastructure is **event driven, a provisioning action on the IdP is quickly pass on all applications.**
| Easy to implement | {{<svg-rendercross>}} <br>*Mature but old and difficult* | {{<svg-rendercross>}} <br>*Mature but old and difficult* | {{<svg-rendercross>}} {{<svg-rendercheck>}} <br>*Simple and web native, but non-standard IdP* | {{<svg-rendercheck>}} <br>*Cli or ui could be used on IdP or on apps* |
| Many implementations | {{<svg-rendercheck>}} | {{<svg-rendercheck>}} | {{<svg-rendercheck>}} | {{<svg-rendercross>}} <br>*Not a lot of implementations yet* |
| Single sign-on | {{<svg-rendercross>}} <br>*User must sign-on each application* | {{<svg-rendercheck>}} | {{<svg-rendercheck>}} | {{<svg-rendercheck>}} |
| No trust issues | {{<svg-rendercross>}} <br>*Expose user’s credentials to each application* | {{<svg-rendercross>}} <br>***???????*** | {{<svg-rendercheck>}} <br>*Zero trust in applications* | {{<svg-rendercheck>}} <br>*Zero trust in applications* |
| Scalable provisioning | {{<svg-rendercross>}} <br>*By diffing, each app reads all and compares it* | {{<svg-rendercross>}} <br>*By diffing, each app reads all and compares it* | {{<svg-rendercheck>}} <br>*No diffing, modern storage, SQL database can be used* | {{<svg-rendercheck>}} <br>*Real time atomic provisioning* |
| Scalable provisioning | {{<svg-rendercross>}} <br>*Only when apps trigger it or when the user logs in* | {{<svg-rendercross>}} <br>*Only when apps trigger it or when the user logs in* | {{<svg-rendercross>}} <br>*No way to remove a user from the application* | {{<svg-rendercheck>}} |