Skip to content

Commit cb413f2

Browse files
Add Use case 7
1 parent 3ea59b1 commit cb413f2

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

docs/specs/organization/10-use-case.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,3 +419,62 @@ Adding Identities generally does not contradict with auto-membership though.
419419
### Use case 6: Design Decision
420420

421421
We implement User case 6.1 for MVP.
422+
423+
## Use case 7: UI/UX of Organizational signup and login
424+
425+
### Use case 7.1: Supporting Auth0's Login Experience and Login Flow
426+
427+
Depending on the selected "Login Experience", the developer can further configure "Login Flow"
428+
429+
- Login Experience - Individuals
430+
- Login Experience - Business Users
431+
- Login Flow - Prompt for Credentials
432+
- Login Flow - Prompt for Organization
433+
- Login Flow - No Prompt
434+
- Login Experience - Both
435+
- Login Flow - Prompt for Credentials
436+
- Login Flow - No Prompt
437+
438+
> [!NOTE]
439+
> "Login Flow - No Prompt" means the developer has to specify the Organization in the authentication request.
440+
441+
If we try to encode the 2 enums into 1 enum, we have:
442+
443+
| enum | Auth0 equivalent | Description |
444+
| --- | --- | --- |
445+
| `x_organization_behavior=only_non_member` | Login Experience - Individuals | This is the default value because it is back compatible with the pre-organization era. No prompts on Organization. The end-user signs in without Organization. |
446+
| `x_organization_behavior=only_member:prompt_end_user_for_organization_last` | Login Experience - Business Users + Login Flow - Prompt for Credentials | For signups, it is expected that the signed up User will be made Members of some Organizations via auto-membership, otherwise the end-user will be shown an error screen as a dead end. |
447+
| `x_organization_behavior=only_member:prompt_end_user_for_organization_first` | Login Experience - Business Users + Login Flow - Prompt for Organization | The end-user is expected to know the Organization slug. Like Auth0, if the end-user enters an invalid Organization slug, an error is shown immediately. |
448+
| `x_organization_behavior=only_member:developer_specified_organization` | Login Experience - Business Users + Login Flow - No Prompt | The developer **MUST** specifies which organization to sign in. It is an OAuth Error or SAML error if organization is unspecified by the developer. |
449+
| `x_organization_behavior=either_member_or_non_member:prompt_end_user_for_organization_last` | Login Experience - Both + Login Flow - Prompt for Credentials | The end-user is prompted to select "No Organization" and the Organizations he is a member of. The "No Organization" option always exist. |
450+
| `x_organization_behavior=either_member_or_non_member:developer_specified_organization` | Login Experience - Both + Login Flow - No Prompt | The developer **OPTIONALLY** specifies which organization to sign in. If unspecified, it behaves the same as `x_organization_behavior=either_member_or_non_member:prompt_end_user_for_organization_last` |
451+
452+
When Organization is not known at the beginning, Organization-specific configuration **IS NOT** applied.
453+
This implies the authentication **COULD** be invalidated by the choice of Organization.
454+
455+
For example, the end-user signs in with Email Login ID and password, select an Organization with Federated Login enabled.
456+
Then the end-user has to restart the authentication from the beginning.
457+
458+
For example, the end-user signs in with Email Login ID and password, select an Organization that requires MFA.
459+
In this particular case, it makes more sense to only require the end-user to do MFA only, rather than restarting the authentication from the beginning.
460+
461+
For example, the end-user signs in with Email Login ID and password, select an Organization that has a strict password policy that the current password does not meet.
462+
In this particular case, the end-user has to change the password in order to complete the login.
463+
464+
`prompt_end_user_for_organization_last`, in many ways, does not work well as Authentication Flow.
465+
466+
> [!IMPORTANT]
467+
> Need discussion on how to fit `prompt_end_user_for_organization_last` with Authentication Flow.
468+
>
469+
> 1. How do we model `prompt_end_user_for_organization_last`? As a new step in authflow?
470+
> 2. Once organization is known, the generated authflow may change. Do we compute a diff between the executed authflow with the newly generated authflow? If yes, do we execute the diff?
471+
472+
### Use case 7: Design Decision
473+
474+
For simplicity, we can implement the following for MVP:
475+
476+
- `x_organization_behavior=only_non_member`
477+
- `x_organization_behavior=only_member:prompt_end_user_for_organization_first`
478+
- `x_organization_behavior=only_member:developer_specified_organization`
479+
480+
Other variants requires `prompt_end_user_for_organization_last` to be sorted out first.

0 commit comments

Comments
 (0)