Create and recover signers
Create and manage embedded wallets for your users
Understanding embedded signers#
To create wallets for your users during the login flow, you need to configure the embedded signer. The configuration depends on your chosen recovery method, so it's important to decide on your recovery strategy first.
Always wait for the embedded state to be ready before using the embedded signer. See the integration guide.
Choosing a Recovery Method#
There are two core recovery modes for Openfort embedded signers:
- Automatic Recovery: Recovery share is encrypted using project and Openfort entropy
- User-based Recovery: Recovery share is encrypted using user-provided entropy (password)
Automatic recovery setup#
Automatic recovery provides smooth UX but requires careful security considerations. You can implement it using either Openfort Auth or a third-party authentication provider:
When using automatic recovery, Shield generates a password that is used for the encryption of the recovery share. The full encryption key can only be accessed if the decryption request includes the user's auth token.
When using automatic recovery, its very important to ensure that the encryption share
should not be available from the client side of the application.
From your backend, you should have an endpoint that generates an encryption session for the user. This endpoint should be protected and only accessible by the user who is requesting the encryption session (i.e. the user who is logging in).
An encryption session is requested every time configureEmbeddedSigner
is called. The encryption session is only valid for a single use.
For example, in a Next.js API route, you can create an endpoint like this:
Once we've secured the backend we setup the client side:
We recommend enabling user-based recovery for users. This is especially important to enforce as the value of assets in a user's wallet grows.
User-based recovery setup#
Password recovery
Require that users set a password when the wallet is created, enforcing password-based recovery from the start.
If encrypted by user-provided entropy, only the user can decrypt the recovery share. Openfort never sees or the user's password. Therefore, if you're not planning to ever user the automatic recovery mode, you can use the encryption share
in the client side of the application.
_15using Openfort.OpenfortSDK;_15using Openfort.OpenfortSDK.Model;_15public class openfortManager: MonoBehaviour _15{_15 private OpenfortSDK Openfort;_15 private async void AuthAndSetPassordRecoveryMethod(string email, string password, string recoveryPassword)_15 {_15 AuthResponse response = await Openfort.SignUpWithEmailPassword(email, password);_15 string token = response.Token;_15 int chainId = 80002;_15 ShieldAuthentication shieldConfig = new ShieldAuthentication(ShieldAuthType.Openfort, token);_15 EmbeddedSignerRequest request = new EmbeddedSignerRequest(chainId, shieldConfig, recoveryPassword);_15 await Openfort.ConfigureEmbeddedSigner(request);_15 }_15}
Pregeneration#
Openfort also allows you to pregenerate embedded wallets for your users, even before they first login to your game. Please see our pregeneration guide for more.