Here are some examples of how MFA policies can be used in practice on your end-users’ sub-organization. MFA policies are highly customizable and can be configured to fit the specific needs of your organization and users. Feel free to tweak these examples to fit your use case!
Only require MFA for signing activities
In this example, we require users to satisfy MFA only when performing signing activities. For all other activities, no MFA is required. In this case, the user can use their existing session along with a passkey to satisfy MFA when signing.
Two factor authentication
In this example, we require users to authenticate with both a passkey and an email OTP to retrieve a session. Every other activity requires only a session.
Two factor authentication, exporting requires stronger MFA
In this example, we require users to authenticate with both a passkey and an email OTP to retrieve a session. For exporting, we require users to authenticate with their passkey and their existing session. For all other activities, only a session is required.
Two factor authentication, signing requires MFA every 15 minutes
In this example, MFA is required for authentication. Signing requires MFA but, a session profile with a 15 minute expiration is used so that users only need to satisfy MFA every 15 minutes when signing.
In order to get this session profile, the user must authenticate with their existing default session (retrieved by using email OTP and a passkey) and a passkey. All other activities only require a session.
First, we set up the session profile with a 15 minute expiration on the parent organization:
Then, we set up the MFA policies on the sub-organization:
Login capabilities by authentication method
In this example, different login methods grant different levels of access:
- SMS OTP login: grants a session that can do all activities except export
- Passkey login: grants a session that can do all activities including export
- SMS user wants to export: must upgrade their session by proving they also have a passkey. The upgraded session lasts 15 minutes, after which they must re-authenticate to export again.
First, we set up the session profiles on the parent organization:
Then, we set up the MFA policies on the sub-organization:
Explicit downgrade
In this example, users log in with SMS OTP and receive a safe session that allows all activities except signing. To sign, they must upgrade to a signing session by proving they have a passkey. The signing session lasts 15 minutes, after which the user falls back to the safe session. In the UX, the user can also explicitly “downgrade” back to the safe session at any time by simply discarding the signing session.
- SMS OTP login: grants a safe session that can do all activities except sign
- User wants to sign: uses the safe session and a passkey to get a signing session that can only be used for signing activities. The signing session lasts 15 minutes.
- Explicit downgrade: user discards the signing session in the UX and switches back to the safe session. No Turnkey API call is needed - the app simply stops using the signing session.
- Automatic downgrade: after 15 minutes, the signing session expires. Any signing attempts will require the user to go through the upgrade flow again.
First, we set up the session profiles on the parent organization:
Then, we set up the MFA policies on the sub-organization:
Enforcing MFA via delegated access
In this example, a parent organization enforces MFA on an end-user’s sub-organization using a delegated access user. The delegated access user is controlled by the parent org and has a narrowly scoped policy that only allows it to manage MFA policies.
- Parent org
- Creates a sub-organization with a root user
- Sub-org root user
- Creates a delegated access user whose API key is controlled by the parent org
- Assigns the delegated access user a policy that only allows MFA policy management
- Delegated access user
- Creates an MFA policy requiring the end user to authenticate with a passkey for all signing activities
First, the sub-org root user creates a policy for the delegated access user:
Give your protective policy order: 0, as the example below does. Only the first matching policy applies, and two policies on the same user cannot share an order, so nothing can be placed ahead of order 0. Leave it free and a credential that can create MFA policies could take it with a permissive policy, overriding yours without modifying or deleting it.
Then, the delegated access user (controlled by the parent org) creates an MFA policy for the sub-org root user:
Quorum-based MFA recovery via delegated access
In this example, a parent organization sets up a recovery mechanism using two delegated access users. Both must approve before an MFA policy can be deleted, preventing any single party from removing a user’s MFA protections. See MFA Recovery for more details.
- Sub-org root user
- Creates two delegated access users, each with an API key controlled by a different party in the parent org
- Assigns a policy requiring both delegated users to approve MFA policy deletions
- Delegated access users
- When the end user is locked out, both users must approve the
DeleteMfaPolicy activity
The sub-org root user creates a consensus policy for recovery:
To recover a locked-out user, the first delegated access user proposes the deletion:
Then the second delegated access user approves: