オーラベースのロゴ
オーラベースドキュメント
ドキュメント›ガイド›Verify a user's JWT

バックエンドでユーザーの JWT を確認する

独自のバックエンドは、プロジェクト URL のみを使用して、任意の JOSE ライブラリを使用して、サインインしているユーザーからの要求を確認できます。

6 分 読み取り·レベル 中間·2026/10/25 に改訂
この英語のテキストはフランス語のオリジナルから自動的に生成されたもので、まだレビューされていません。
この翻訳以降、英語のソースが変更されました。一部の情報は古い可能性があります。
このページは自動翻訳されました。英語版が正式です。
#
トークン

1. トークンの署名方法

各プロジェクトには、独自の ES256 (ECDSA P-256) キーがあります。アクセス トークン ヘッダーにはそのキーの kid が含まれ、クレームには次のものが含まれます。

  • iss: <project URL>/v1/auth (例: https://my-app-x1y2z3.aurabase.cloud/v1/auth)、
  • aud: プロジェクト識別子、
  • sub: ユーザー ID に role、 email、 app_metadata 、および user_metadataを加えたもの。

公開キーは、API キーなしで <project URL>/.well-known/jwks.jsonで提供されます。シークレットはバックエンドと共有されず、あるプロジェクトのトークンは別のプロジェクトのキーによって拒否されます。

Studio › 設定 › API には、JWKS URL、発行者、および現在の kidが表示されます。

#
Node.js

2.Node.js (ホセ)

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

const PROJECT_URL = process.env.AURABASE_URL! // https://<スラッグ>.aurabase.cloud
const PROJECT_ID = process.env.AURABASE_PROJECT_ID!

// jose はキーをキャッシュし、未知の子供に出会ったときに再フェッチします (ローテーション)。
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 はユーザー ID です
}
#
パイソン

3. Python (PyJWT)

verify.pypython
import os
import jwt  # pip インストール「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,
    )
#
行く

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
}
#
回転

5. キーのローテーション

Studio でキーをローテーションすると (または POST /v1/auth/admin/signing-keys/rotate キーと service_role キーを使用すると)、新しいトークンごとに新しいキーで署名されます。以前のキーは JWKS に 24 時間保持されるため、ローテーション前に署名されたトークンは検証され続けます。漏洩したキーは、アクティブなキーでなくなったら DELETE /v1/auth/admin/signing-keys/<kid> を使用して取り消すことができ、その後 JWKS から削除されて拒否されます。

情報

JavaScript SDK では、aura.auth.getClaims() はすでにこの JWKS を使用してセッション トークンをローカルで検証し、実際のクレームを返します。