Next, create an app client in the Authsignal Portal under Settings -> App clients.
For each client you create, you can configure a separate access token and refresh token duration. The client ID will be set as the access token’s aud claim.
For an OTP authentication method such as Email OTP you can follow the integration steps below to create a session.1. Backend - Track actionIn your app’s backend, use an Authsignal Server SDK to track an action and obtain an initial client token.
2. Frontend - Use a Client SDKIn your web or mobile app, call setToken with the client token obtained in step 1, then use the relevant SDK methods to progress the user through a challenge and obtain a new client token.
Copy
Ask AI
// Set token from the track responseauthsignal.setToken("eyJhbGciOiJ...");// Send the user an email OTP code// You can call this multiple times via a 'resend' buttonawait authsignal.email.challenge();// Verify the inputted code matches the original codeconst response = await authsignal.email.verify({ code: "123456" });// Obtain a new tokenconst token = response.token;
3. Backend - Create sessionPass the client token obtained in step 2 to your backend and exchange it for an access token and refresh token.
When using a device-bound authentication method like passkeys, only two steps are required to create a session.1. Frontend - Use a Client SDKUse our web SDK to present a passkey sign-in prompt in the browser, or use one of our mobile SDKs to present the native passkey UI in an iOS or Android app.
Copy
Ask AI
const response = await authsignal.passkey.signIn({ action: "signInWithPasskey",});if (response.data?.token) { // Send token to your backend for validation const token = response.data.token;} else { console.error("Passkey sign-in failed:", response.error);}
2. Backend - Create sessionPass the token obtained in step 1 to your backend and exchange it for an access token and refresh token.
In addition to verifying the access token’s signature, the Authsignal SDK’s validateSession
method will also check that the token has not been revoked.