0.35.1 • Published 5 months ago

@clerk/backend v0.35.1

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

@clerk/backend

Chat on Discord Clerk documentation Follow on Twitter

Changelog · Report a Bug · Request a Feature · Ask a Question


Overview

This package provides Clerk Backend API resources and low-level authentication utilities for JavaScript environments. It is mostly used as the base for other Clerk SDKs but it can be also used on its own.

Features

  • Built for V8 isolates (Cloudflare Workers, Vercel Edge Runtime, etc...).
  • Make it isomorphic to work across all modern JS runtimes.
  • Use options injection for all keys and settings.
  • Support multiple CLERK_API_KEY for multiple instance REST access.
  • Align JWT key resolution algorithm across all environments (Function param > Environment variable > JWKS from API).
  • Tested automatically across different runtimes (Node, CF Workers, Vercel Edge middleware.)
  • Clean up Clerk interstitial logic.
  • Refactor the Rest Client API to return {data, errors} instead of throwing errors.
  • Export a generic verifyToken for Clerk JWTs verification.
  • Align AuthData interface for SSR.
  • Export CJS and ESM.

How to use

Requires Node >= 16.

npm install @clerk/backend
import Clerk from '@clerk/backend';

const clerk = Clerk({ apiKey: '...' });

await clerk.users.getUser("user_...");

API

Clerk(options: ClerkOptions)

Create Clerk SDK that includes an HTTP Rest client for the Backend API and session verification helpers. The clerk object contains the following APIs and methods:

import Clerk from '@clerk/backend';

const clerk = Clerk({ apiKey: '...' });

await clerk.users.getUser('user_...');

// Available APIs
clerk.allowlistIdentifiers;
clerk.clients;
clerk.emailAddresses;
clerk.emails;
clerk.interstitial;
clerk.invitations;
clerk.organizations;
clerk.phoneNumbers;
clerk.redirectUrls;
clerk.sessions;
clerk.signInTokens;
clerk.smsMessages;
clerk.users;

// These functions should be used by framework-specific libraries, such as @clerk/nextjs or @clerk/remix.

// Compute the authentication state given the request parameters.
clerk.authState(options);

// Build debug payload of the auth state.
clerk.debugAuthState(authState);

// Load clerk interstitial from this package
clerk.localInterstitial(options);

// Load clerk interstitial from the public Backend API endpoint
clerk.remotePublicInterstitial(options);

// Load clerk interstitial from the public Private API endpoint (Deprecated)
clerk.remotePrivateInterstitial(options);

verifyToken(token: string, options: VerifyTokenOptions)

Verifies a Clerk generated JWT (i.e. Clerk Session JWT and Clerk JWT templates). The key resolution via JWKS or local values is handled automatically.

import { verifyToken } from '@clerk/backend';

verifyToken(token, {
  issuer: '...',
  authorizedParties: '...',
});

verifyJwt(token: string, options: VerifyJwtOptions)

Verifies a Clerk generated JWT (i.e. Clerk Session JWT and Clerk JWT templates). The key needs to be provided in the options.

import { verifyJwt } from '@clerk/backend';

verifyJwt(token, {
  key: JsonWebKey,
  issuer: '...',
  authorizedParties: '...',
});

decodeJwt(token: string)

Decodes a JWT.

import { decodeJwt } from '@clerk/backend';

decodeJwt(token);

hasValidSignature(jwt: Jwt, jwk: JsonWebKey)

Verifies that the JWT has a valid signature. The key needs to be provided.

import { hasValidSignature } from '@clerk/backend';

hasValidSignature(token, jwk);

License

This project is licensed under the MIT license.

See LICENSE for more information.

0.35.1

5 months ago

0.35.0

5 months ago

1.0.0-alpha-v5.7

5 months ago

1.0.0-alpha-v5.6

5 months ago

0.34.3

5 months ago

1.0.0-alpha-v5.4

5 months ago

1.0.0-alpha-v5.5

5 months ago

0.32.1

6 months ago

0.32.0

6 months ago

0.33.0

6 months ago

0.30.3

7 months ago

0.30.2

7 months ago

0.30.1

7 months ago

0.30.0

7 months ago

0.31.3

6 months ago

0.31.2

7 months ago

0.31.1

7 months ago

0.31.0

7 months ago

0.25.1

10 months ago

0.25.0

10 months ago

0.26.0

10 months ago

0.34.2

5 months ago

0.34.1

6 months ago

0.34.0

6 months ago

0.23.7

10 months ago

0.24.0

10 months ago

0.29.0

8 months ago

0.29.3

7 months ago

0.29.2

7 months ago

0.29.1

8 months ago

0.27.0

9 months ago

0.28.1

8 months ago

0.28.0

8 months ago

1.0.0-alpha-v5.2

6 months ago

1.0.0-alpha-v5.3

5 months ago

1.0.0-alpha-v5.0

6 months ago

1.0.0-alpha-v5.1

6 months ago

0.23.6

10 months ago

0.21.1-snap.f75792d

11 months ago

0.21.1-snap.5ed1d38

11 months ago

0.21.0

11 months ago

0.21.1-snap.7342160

11 months ago

0.21.1-snap.d32d2f8

11 months ago

0.22.0-snap.46c588e

11 months ago

0.21.1-snap.691991c

11 months ago

0.22.0

11 months ago

0.21.1-snap.9208293

11 months ago

0.21.1-snap.5909c28

11 months ago

0.22.0-snap.a0dd011

11 months ago

0.22.0-snap.e2ec9c0

11 months ago

0.21.1-snap.e324619

11 months ago

0.22.0-snap.af9b738

11 months ago

0.21.1-snap.219d1fb

11 months ago

0.21.1-snap.8fda67e

11 months ago

0.22.0-snap.2150b23

11 months ago

0.21.1-snap.484a088

11 months ago

0.22.0-snap.5fede9e

11 months ago

0.21.1-snap.cd256f5

11 months ago

0.23.5

11 months ago

0.23.4

11 months ago

0.23.3

11 months ago

0.23.2

11 months ago

0.23.1

11 months ago

0.23.0

11 months ago

0.21.1-snap.77525ba

11 months ago

0.21.1-snap.3210eda

11 months ago

0.20.1

11 months ago

0.20.0

12 months ago

0.18.1-staging.0

12 months ago

0.18.1-staging.1

12 months ago

0.19.2-staging.0

12 months ago

0.19.2-staging.1

12 months ago

0.18.1

12 months ago

0.18.0

12 months ago

0.19.1-staging.0

12 months ago

0.19.1-staging.1

12 months ago

0.21.0-staging.1

11 months ago

0.21.0-staging.2

11 months ago

0.21.0-staging.3

11 months ago

0.21.0-staging.4

11 months ago

0.20.0-staging.2

12 months ago

0.20.0-staging.1

12 months ago

0.20.0-staging.0

12 months ago

0.21.0-staging.0

11 months ago

0.19.0

12 months ago

0.19.1

12 months ago

0.19.2

12 months ago

0.20.1-staging.0

11 months ago

0.19.0-staging.0

12 months ago

0.19.0-staging.1

12 months ago

0.18.0-staging.4

12 months ago

0.17.2

1 year ago

0.17.0

1 year ago

0.17.1

1 year ago

0.16.2

1 year ago

0.13.6

1 year ago

0.13.0

1 year ago

0.13.1

1 year ago

0.13.3

1 year ago

0.13.4

1 year ago

0.13.5

1 year ago

0.15.0

1 year ago

0.12.0

1 year ago

0.16.0

1 year ago

0.16.1

1 year ago

0.11.0

1 year ago

0.10.0

1 year ago

0.9.0-staging.0

1 year ago

0.9.0

1 year ago

0.9.1

1 year ago

0.8.1-staging.6

1 year ago

0.9.1-staging.0

1 year ago

0.8.0-staging.0

1 year ago

0.7.0-staging.0

1 year ago

0.6.3-staging.0

1 year ago

0.6.3-staging.1

1 year ago

0.7.0

1 year ago

0.8.1-staging.3

1 year ago

0.8.1-staging.4

1 year ago

0.8.1-staging.5

1 year ago

0.8.1-staging.0

1 year ago

0.8.1-staging.1

1 year ago

0.8.1-staging.2

1 year ago

0.7.1-staging.0

1 year ago

0.8.0

1 year ago

0.6.2-staging.1

1 year ago

0.6.2-staging.0

1 year ago

0.6.2

1 year ago

0.5.0-staging.1

1 year ago

0.4.0-staging.5

1 year ago

0.5.0-staging.2

1 year ago

0.4.0-staging.4

1 year ago

0.4.0-staging.7

1 year ago

0.5.0-staging.0

1 year ago

0.4.0-staging.6

1 year ago

0.4.0-staging.1

1 year ago

0.4.0-staging.0

1 year ago

0.4.0-staging.3

1 year ago

0.4.0-staging.2

1 year ago

0.6.0-staging.0

1 year ago

0.4.3-staging.1

1 year ago

0.4.0-staging.8

1 year ago

0.4.1-staging.0

1 year ago

0.5.1-staging.3

1 year ago

0.6.1-staging.0

1 year ago

0.5.1-staging.2

1 year ago

0.5.1-staging.4

1 year ago

0.5.1-staging.1

1 year ago

0.5.1-staging.0

1 year ago

0.4.4-staging.1

1 year ago

0.5.0

1 year ago

0.5.2

1 year ago

0.5.1

1 year ago

0.5.2-staging.0

1 year ago

0.4.5

1 year ago

0.4.1

1 year ago

0.4.0

1 year ago

0.6.1

1 year ago

0.4.3

1 year ago

0.6.0

1 year ago

0.4.2

1 year ago

0.3.2

1 year ago

0.3.2-staging.0

1 year ago

0.3.1

1 year ago

0.3.1-staging.1

1 year ago

0.3.1-staging.0

1 year ago

0.3.0

1 year ago

0.3.0-staging.0

1 year ago

0.2.4-staging.0

1 year ago

0.2.3

1 year ago

0.2.2

1 year ago

0.2.2-staging.1

1 year ago

0.2.2-staging.0

1 year ago

0.2.1

1 year ago

0.2.0

1 year ago

0.2.0-staging.0

1 year ago

0.1.1

1 year ago

0.1.1-staging.0

1 year ago

0.1.0

1 year ago

0.1.0-staging.4

1 year ago

0.1.0-staging.3

1 year ago

0.1.0-staging.2

1 year ago

0.1.0-staging.1

1 year ago

0.1.0-staging.0

1 year ago