Sprawdź JWT użytkownika w swoim backendzie
Twój własny backend może sprawdzić, czy żądanie pochodzi od zalogowanego użytkownika, w dowolnej bibliotece JOSE, używając tylko adresu URL projektu.
6 min przeczytane·Poziom mediator·Zmieniono 25 paź 2026
Ten tekst w języku angielskim został wygenerowany automatycznie na podstawie francuskiego oryginału i nie był jeszcze recenzowany.
Źródło angielskie uległo zmianie od czasu tego tłumaczenia. Niektóre informacje mogą być nieaktualne.
Ta strona została przetłumaczona automatycznie. Wersja angielska jest miarodajna.
#Żetony
1. Jak podpisuje się tokeny
Każdy projekt ma swój własny klucz ES256 (ECDSA P-256). Nagłówek tokenu dostępu zawiera kid tego klucza, a oświadczenia zawierają:
iss: <project URL>/v1/auth (na przykład https://my-app-x1y2z3.aurabase.cloud/v1/auth),
aud: identyfikator projektu,
sub: identyfikator użytkownika plus role, email, app_metadata i user_metadata.
Klucze publiczne są podawane bez klucza API pod adresem <project URL>/.well-known/jwks.json. Żaden sekret nie jest udostępniany Twojemu backendowi, a token jednego projektu jest odrzucany przez klucze innego.
Studio > Ustawienia > API pokazuje adres URL JWKS, wystawcę i bieżący kid.
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 przechowuje klucze w pamięci podręcznej i pobiera je ponownie, gdy spotyka nieznane dziecko (rotacja).
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 to identyfikator użytkownika
}
verify.pypython
import os
import jwt # pip zainstaluj „pyjwt [krypto]”
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,
)
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
}
Obrót klucza w Studio (lub za pomocą POST /v1/auth/admin/signing-keys/rotate i klucza service_role) powoduje, że każdy nowy token jest podpisywany nowym kluczem. Poprzedni klucz pozostaje w JWKS-ie przez 24 godziny, zatem tokeny podpisane przed rotacją podlegają ciągłej weryfikacji; klucz, który wyciekł, można unieważnić za pomocą DELETE /v1/auth/admin/signing-keys/<kid>, gdy nie jest już aktywny, a następnie zostanie usunięty z JWKS i odrzucony.
Informacje
W JavaScript SDK aura.auth.getClaims() już weryfikuje token sesji lokalnie za pomocą tego JWKS i zwraca swoje rzeczywiste roszczenia.
Ostatnia aktualizacja · 25 paź 2026