Skip to main content
Bring Your Own Auth (BYOA) is an enterprise feature. Contact us in Slack or at [email protected] to enable it.
If you already issue your own JWTs (e.g. from Auth0, Firebase Auth, Supabase, or your own backend), you can exchange that JWT for a Dynamic session. After sign-in, the user behaves like any other Dynamic user — with access to wallets, user management, and the rest of the SDK. For concepts and configuration, see Bring Your Own Auth.

Prerequisites

  • BYOA configured in your Dynamic dashboard (issuer, JWKS URL).
  • Dynamic client created and initialized (see the React Native quickstart).
  • Your backend issues a JWT with at least iss, sub, and exp claims.

Usage

Call signInWithExternalJwt on the Dynamic client’s external auth. Dynamic verifies the signature against your configured JWKS URL, validates the claims, and establishes a session.
React Native
import { dynamicClient } from '<path to client file>';

const signIn = async (externalJwt: string, externalUserId: string) => {
  try {
    await dynamicClient.auth.external.signInWithExternalJwt({
      externalJwt,
      externalUserId,
    });

  } catch (e) {
    console.error('Dynamic sign-in failed:', e);
  }
};

Parameters

ParameterTypeRequiredDescription
externalJwtstringYesThe raw encoded JWT issued by your authentication provider.
externalUserIdstringYesThe user ID in your authentication system. Must match the sub claim in the JWT — Dynamic derives the stored external user ID from the JWT server-side.