ऑराबेस लोगो
aurabaseडॉक्स
डॉक्स›गाइड›Verify a user's JWT

अपने बैकएंड में उपयोगकर्ता का JWT सत्यापित करें

आपका स्वयं का बैकएंड केवल प्रोजेक्ट यूआरएल का उपयोग करके जांच कर सकता है कि किसी JOSE लाइब्रेरी के साथ साइन-इन किए गए उपयोगकर्ता से अनुरोध आया है।

6 मि॰ पढ़ें·स्तर मध्यवर्ती·25 अक्टू॰ 2026 पर संशोधित
यह अंग्रेजी पाठ फ़्रेंच मूल से स्वचालित रूप से उत्पन्न हुआ था और अभी तक इसकी समीक्षा नहीं की गई है।
इस अनुवाद के बाद से अंग्रेजी स्रोत बदल गया है। कुछ जानकारी पुरानी हो सकती है.
यह पृष्ठ स्वचालित रूप से अनुवादित किया गया था. अंग्रेजी संस्करण प्रामाणिक है.
#
टोकन

1. टोकन पर हस्ताक्षर कैसे किये जाते हैं

प्रत्येक प्रोजेक्ट की अपनी अपनी ES256 (ECDSA P-256) कुंजी होती है। एक्सेस टोकन हेडर में उस कुंजी का kid होता है, और दावे होते हैं:

  • iss: <project URL>/v1/auth (उदाहरण के लिए https://my-app-x1y2z3.aurabase.cloud/v1/auth),
  • aud: प्रोजेक्ट पहचानकर्ता,
  • sub: उपयोगकर्ता आईडी, प्लस role, email, app_metadata और user_metadata।

सार्वजनिक कुंजियाँ, बिना किसी एपीआई कुंजी के, <project URL>/.well-known/jwks.json पर परोसी जाती हैं। आपके बैकएंड के साथ कोई रहस्य साझा नहीं किया जाता है, और एक प्रोजेक्ट का टोकन दूसरे प्रोजेक्ट की कुंजी द्वारा अस्वीकार कर दिया जाता है।

स्टूडियो › सेटिंग्स › एपीआई JWKS URL, जारीकर्ता और वर्तमान kid दिखाता है।

#
नोड.जे.एस

2. नोड.जेएस (जोस)

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!

// जोस किसी अज्ञात बच्चे (रोटेशन) से मिलने पर चाबियाँ कैश करता है और पुनः प्राप्त करता है।
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 उपयोगकर्ता आईडी है
}
#
अजगर

3. पायथन (PyJWT)

verify.pypython
import os
import jwt  # पिप इंस्टाल "pyjwt[क्रिप्टो]"

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,
    )
#
जाना

4. जाओ

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. कुंजी घुमाव

स्टूडियो में कुंजी को घुमाने से (या POST /v1/auth/admin/signing-keys/rotate और service_role कुंजी के साथ) प्रत्येक नए टोकन पर एक नया कुंजी चिह्न बनता है। पिछली कुंजी 24 घंटे तक JWKS में रहती है, इसलिए रोटेशन से पहले हस्ताक्षरित टोकन सत्यापित होते रहते हैं; एक कुंजी जो लीक हो गई है उसे DELETE /v1/auth/admin/signing-keys/<kid> के साथ रद्द किया जा सकता है जब वह सक्रिय नहीं रह जाती है, और फिर उसे JWKS से हटा दिया जाता है और अस्वीकार कर दिया जाता है।

जानकारी

जावास्क्रिप्ट एसडीके में, aura.auth.getClaims() पहले से ही इस JWKS के साथ सत्र टोकन को स्थानीय रूप से सत्यापित करता है और इसके वास्तविक दावे लौटाता है।