Laufzeitunterstützung
- Cloudflare Workers (primäres Ziel)
- Vercel Edge Runtime und Node.js Server-Laufzeitumgebungen
- Jede mit Web Crypto kompatible Laufzeitumgebung (Bun, Deno)
authenticateRequest
Ein Bearer-Token oder Session-Cookie aus einer eingehenden Request extrahieren, Signatur und Claims prüfen und ein angemeldetes oder abgemeldetes Zustandsobjekt zurückgeben.
import { authenticateRequest } from '@xid-kit/backend'
const state = await authenticateRequest(request, {
jwtKey: env.XID_JWKS_PUBLIC_KEY,
issuer: 'https://xid.dev',
})
if (state.status === 'signed-in') {
const { userId } = state.toAuth()
}verifyToken
Niedrigstufige Access-Token-Prüfung. jwtKey aus JWKS übergeben, um Netzwerkumlauf beim Kaltstart zu überspringen. Erwartete Fehler geben einen Result-Typ zurück, keine Ausnahme.
import { verifyToken } from '@xid-kit/backend'
const result = await verifyToken(token, {
jwtKey: env.XID_JWKS_PUBLIC_KEY,
issuer: 'https://xid.dev',
audience: 'my-api',
})
if (!result.ok) return new Response('Unauthorized', { status: 401 })verifyWebhook
Validiert Svix-artige Webhook-Signaturen (svix-id, svix-timestamp, svix-signature) mit einem Fünf-Minuten-Wiedergabefenster.
import { verifyWebhook } from '@xid-kit/backend'
const event = await verifyWebhook(request, {
secret: env.XID_WEBHOOK_SECRET,
})Exportierte API
| Exportieren | Art | Zweck |
|---|---|---|
authenticateRequest |
function | Bearer-Token oder Session-Cookie extrahieren und prüfen; gibt diskriminierte Vereinigung RequestState zurück |
verifyToken |
function | Niedrigstufige Access-Token-Prüfung: signature, exp, nbf, iss, aud, azp |
verifyWebhook |
function | Svix-artiger HMAC-SHA256-Webhook-Signatur-Validierung mit 5-Minuten-Wiedergabefenster |
toVerifyKeySet |
function | JwtKey (JWK, JWKS oder CryptoKey) in VerifyKeySet zur Verifizierung umwandeln |
JwksCache |
class | Optionaler netzwerkbasierter JWKS-Cache mit konfigurierbarer TTL (Standard 3600 s); nur verwenden, wenn jwtKey nicht vorgeladen ist |
AppError |
class | Wird für nicht behebbare SDK-Fehler geworfen: fehlender JWT-Schlüssel, JWKS-Abruffehler, ungültige Optionen |
BACKEND_ERROR_CODES |
as const Tupel | Alle BackendErrorCode-Werte: missing_jwt_key, jwks_fetch_failed, invalid_options |
PACKAGE |
Zeichenkettenkonstante | Paketkennzeichner ‘@xid-kit/backend’ |
Typen
| Typ | Beschreibung |
|---|---|
JwtKey |
Akzeptierte öffentliche Schlüsselformate: PublicJwk, Jwks oder { alg, publicKey: CryptoKey } |
JwksCacheOptions |
Konstruktoroptionen für JwksCache: jwksUri, ttlSec, fetchFn |
VerifyTokenOptions |
Optionen für verifyToken: jwtKey, issuer, audience, clockSkewSec, signal |
VerifyTokenError |
Strukturierter Fehler bei fehlgeschlagener Token-Prüfung (erwarteter Fehler; wird nicht geworfen) |
AuthenticateRequestOptions |
Optionen für authenticateRequest: jwtKey, issuer, audience, cookieName |
RequestState |
Diskriminierte Vereinigung von SignedInState und SignedOutState |
SignedInState |
Gültiges Sitzungs-Token gefunden; enthält toAuth() für den Zugriff auf Claims |
SignedOutState |
Kein gültiges Token vorhanden; das Ursachenfeld gibt den Grund an |
VerifyWebhookOptions |
Optionen für verifyWebhook: secret, tolerance (Wiedergabefenster in Sekunden) |
WebhookVerifyError |
Strukturierter Fehler bei ungültiger oder wiederholter Webhook-Signatur |
VerifiedWebhook |
Geparste und verifizierte Webhook-Nutzlast |
BackendErrorCode |
Vereinigung der BACKEND_ERROR_CODES-Werte |
Sicherheitsgrenzen
- Verwendet ausschließlich öffentliche JWKS. Lädt niemals private Instanz-Signaturschlüssel.
- Verifizierung verwendet Web Crypto über @xid-kit/crypto.
- Erwartete Fehler geben Result-Typen zurück; unerwartete Fehler werfen AppError.