Aurabase Logosu
aura tabanıdokümanlar
dokümanlar›Kılavuzlar›Verify a user's JWT

Arka uçta bir kullanıcının JWT değerini doğrulayın

Kendi arka ucunuz, yalnızca proje URL'sini kullanarak herhangi bir JOSE kitaplığıyla oturum açmış bir kullanıcıdan bir isteğin gelip gelmediğini kontrol edebilir.

6 dk. oku·Seviye orta düzey·25 Eki 2026 tarihinde revize edildi
Bu İngilizce metin, Fransızca orijinalinden otomatik olarak oluşturulmuştur ve henüz incelenmemiştir.
Bu çeviriden bu yana İngilizce kaynak değişti. Bazı bilgiler güncelliğini kaybetmiş olabilir.
Bu sayfa otomatik olarak çevrildi. İngilizce versiyonu yetkilidir.
#
Jetonlar

1. Tokenlar nasıl imzalanır?

Her projenin kendi kendi ES256 (ECDSA P-256) anahtarı vardır. Erişim belirteci başlığı bu anahtarın kid değerini taşır ve talepler şunları taşır:

  • iss: <project URL>/v1/auth (örneğin https://my-app-x1y2z3.aurabase.cloud/v1/auth),
  • aud: proje tanımlayıcısı,
  • sub: kullanıcı kimliği artı role, email, app_metadata ve user_metadata.

Genel anahtarlar herhangi bir API anahtarı olmadan <project URL>/.well-known/jwks.json konumunda sunulur. Arka ucunuzla hiçbir sır paylaşılmaz ve bir projenin jetonu diğerinin anahtarları tarafından reddedilir.

Studio › Ayarlar › API, JWKS URL'sini, vereni ve geçerli kid öğesini gösterir.

#
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 anahtarları önbelleğe alır ve bilinmeyen bir çocukla karşılaştığında yeniden getirir (döndürme).
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 kullanıcı kimliğidir
}
#
Piton

3. Python (PyJWT)

verify.pypython
import os
import jwt  # pip kurulumu "pyjwt[kripto]"

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,
    )
#
Git

4. Git

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
}
#
Döndürme

5. Anahtar döndürme

Anahtarın Studio'da döndürülmesi (veya POST /v1/auth/admin/signing-keys/rotate ve service_role anahtarıyla), her yeni belirtecin yeni bir anahtarla imzalanmasını sağlar. Önceki anahtar 24 saat boyunca JWKS'de kalır, bu nedenle rotasyondan önce imzalanan jetonlar doğrulanmaya devam eder; sızdırılan bir anahtar artık etkin olmadığında DELETE /v1/auth/admin/signing-keys/<kid> ile iptal edilebilir ve daha sonra JWKS'den kaldırılıp reddedilebilir.

Bilgi

JavaScript SDK'sında aura.auth.getClaims() oturum belirtecini bu JWKS ile yerel olarak zaten doğruluyor ve gerçek taleplerini döndürüyor.