Aurabase-Logo
AurabasisDokumente
Dokumente›Führer›Verify a user's JWT

Überprüfen Sie den JWT eines Benutzers in Ihrem Backend

Ihr eigenes Backend kann anhand der Projekt-URL überprüfen, ob eine Anfrage von einem angemeldeten Benutzer mit einer beliebigen JOSE-Bibliothek stammt.

6 Min. gelesen·Ebene Mittelstufe·Überarbeitet am 25.10.2026
Dieser englische Text wurde automatisch aus dem französischen Original generiert und wurde noch nicht überprüft.
Die englische Quelle hat sich seit dieser Übersetzung geändert. Einige Informationen sind möglicherweise veraltet.
Diese Seite wurde automatisch übersetzt. Maßgeblich ist die englische Version.
#
Token

1. Wie Token signiert werden

Jedes Projekt hat seinen eigenen ES256 (ECDSA P-256)-Schlüssel. Der Zugriffstoken-Header enthält den kid dieses Schlüssels und die Ansprüche enthalten Folgendes:

  • iss: <project URL>/v1/auth (zum Beispiel https://my-app-x1y2z3.aurabase.cloud/v1/auth),
  • aud: die Projektkennung,
  • sub: die Benutzer-ID, plus role, email, app_metadata und user_metadata.

Die öffentlichen Schlüssel werden ohne API-Schlüssel unter <project URL>/.well-known/jwks.json bereitgestellt. Es wird kein Geheimnis mit Ihrem Backend geteilt und ein Token eines Projekts wird von den Schlüsseln eines anderen Projekts abgelehnt.

Studio › Einstellungen › API zeigt die JWKS-URL, den Aussteller und den aktuellen kid an.

#
Node.js

2. Node.js (Jose)

verify.tstypescript
import { createRemoteJWKSet, jwtVerify } from 'jose'

const PROJECT_URL = process.env.AURABASE_URL! // https://<slug>.aurabase.cloud
const PROJECT_ID = process.env.AURABASE_PROJECT_ID!

// Jose speichert die Schlüssel zwischen und ruft sie erneut ab, wenn er auf ein unbekanntes Kind trifft (Rotation).
const jwks = createRemoteJWKSet(new URL(`${PROJECT_URL}/.well-known/jwks.json`))

export async function verifyAccessToken(token: string) {
  const { payload } = await jwtVerify(token, jwks, {
    issuer: `${PROJECT_URL}/v1/auth`,
    audience: PROJECT_ID,
    algorithms: ['ES256'],
  })
  return payload // payload.sub ist die Benutzer-ID
}
#
Python

3. Python (PyJWT)

verify.pypython
import os
import jwt  # pip install „pyjwt[crypto]“

PROJECT_URL = os.environ["AURABASE_URL"]
PROJECT_ID = os.environ["AURABASE_PROJECT_ID"]
jwks = jwt.PyJWKClient(f"{PROJECT_URL}/.well-known/jwks.json")

def verify_access_token(token: str) -> dict:
    key = jwks.get_signing_key_from_jwt(token).key
    return jwt.decode(
        token,
        key,
        algorithms=["ES256"],
        issuer=f"{PROJECT_URL}/v1/auth",
        audience=PROJECT_ID,
    )
#
Geh

4. Los

verify.gogo
package main

import (
	"fmt"
	"os"

	"github.com/MicahParks/keyfunc/v3"
	"github.com/golang-jwt/jwt/v5"
)

func verify(token string) (jwt.MapClaims, error) {
	projectURL := os.Getenv("AURABASE_URL")
	jwks, err := keyfunc.NewDefault([]string{projectURL + "/.well-known/jwks.json"})
	if err != nil {
		return nil, err
	}
	claims := jwt.MapClaims{}
	_, err = jwt.ParseWithClaims(token, claims, jwks.Keyfunc,
		jwt.WithValidMethods([]string{"ES256"}),
		jwt.WithIssuer(projectURL+"/v1/auth"),
		jwt.WithAudience(os.Getenv("AURABASE_PROJECT_ID")),
	)
	if err != nil {
		return nil, fmt.Errorf("invalid token: %w", err)
	}
	return claims, nil
}
#
Rotation

5. Schlüsseldrehung

Durch Drehen des Schlüssels in Studio (oder mit POST /v1/auth/admin/signing-keys/rotate und dem Schlüssel service_role) wird jedes neue Token mit einem neuen Schlüssel signiert. Der vorherige Schlüssel bleibt 24 Stunden lang im JWKS, sodass vor der Rotation signierte Token weiterhin überprüft werden. Ein durchgesickerter Schlüssel kann mit DELETE /v1/auth/admin/signing-keys/<kid> widerrufen werden, sobald er nicht mehr der aktive ist, und wird dann aus dem JWKS entfernt und abgelehnt.

Infos

Im JavaScript SDK überprüft aura.auth.getClaims() das Sitzungstoken bereits lokal mit diesem JWKS und gibt seine tatsächlichen Ansprüche zurück.

Zuletzt aktualisiert · 25.10.2026