Skip to main content
Verify a non-custodial wallet user on your backend by accepting an OMS Wallet ID token from the client and checking its ES256 signature and required claims against the configured token issuer.
An OIDC provider ID token is an input to wallet authentication. It is not the OMS Wallet ID token returned by getIdToken, and your backend must not verify it with the OMS Wallet issuer keys.
Start with the quickstart for your SDK first: TypeScript, React Native, Swift, or Kotlin.Kotlin snippets call suspend SDK APIs; run them from a coroutine.
During backend setup, inspect the iss and aud claims in an ID token returned by getIdToken from your own OMS project. Store those expected values as OMS_TOKEN_ISSUER and OMS_PROJECT_ID. Do not choose trusted values dynamically from a token received in an application request.

1. Send the OMS Wallet ID token to your backend

After the user authenticates in the app, request an ID token for the active wallet and pass it to your app’s backend client. That client sends the token to your backend over HTTPS.
Send the returned string to your backend over HTTPS using your application’s backend client. Configure these backend environment variables:

2. Verify the token signature and claims

Fetch keys from the accepted issuer’s JWKS endpoint, and use a JWT library to verify the token. The library should select the signing key from the JWT header kid. The JWKS endpoint is:
Validate: Install jose in the backend project that verifies the token:
Node.js

3. Use the wallet claims

After verification succeeds, use only the OMS Wallet identity claims required for the current request. Treat custom claims as client-provided context unless your backend controls their values.
Express