Content
View differences
Updated by Pavel Balashou 12 months ago
**As** a user
**I want OpenProject to** preserve my authentication provider identity when I log in though another provider
**so that** I see which external accounts are connected to my OpenProject account
**Acceptance criteria**
* Nothing should break for users. "nothing" is:
* SSO log in/sign up using SAML
* SSO log in/sign up using OpenIDConnect
User can see which external accounts are connected to its OpenProject account.
**Technical notes**
* Now:
* `users.identity_url` column is used to store `#{auth_provider_slug}:#{auth_provier_user_id}`. And it gets overwritten every time user logs in with another provider.
* Should be:
* `users.identity_url` data moved to a separate table(e.g. `user_auth_provider_links(id, user_id, auth_provider_id, external_id)`
* when user logs in with authentication provider
* then application looks for existing link
* uses it if there is one
* creates new one if there is none
* API `users.identity_url`
* should be marked as deprecated
* on update should change existing link if possible and create a new one otherwise.
* should return last updated link
**Out of scope**
* UI showing all linked accounts <br>
**I want OpenProject to** preserve my authentication provider identity when I log in though another provider
**so that** I see which external accounts are connected to my OpenProject account
**Acceptance criteria**
* Nothing should break for users. "nothing" is:
* SSO log in/sign up using SAML
* SSO log in/sign up using OpenIDConnect
* Now:
* `users.identity_url` column is used to store `#{auth_provider_slug}:#{auth_provier_user_id}`. And it gets overwritten every time user logs in with another provider.
* Should be:
* `users.identity_url` data moved to a separate table(e.g. `user_auth_provider_links(id, user_id, auth_provider_id, external_id)`
* when user logs in with authentication provider
* then application looks for existing link
* uses it if there is one
* creates new one if there is none
* API `users.identity_url`
* should be marked as deprecated
* on update should change existing link if possible and create a new one otherwise.
* should return last updated link
**Out of scope**
* UI showing all linked accounts