문서›가이드›Verify a user's JWT 백엔드에서 사용자의 JWT 확인
자체 백엔드는 프로젝트 URL만 사용하여 JOSE 라이브러리를 사용하여 로그인한 사용자로부터 요청이 오는지 확인할 수 있습니다.
6분 읽기·레벨 중급·2026. 10. 25.에 개정됨
이 영어 텍스트는 프랑스어 원본에서 자동으로 생성되었으며 아직 검토되지 않았습니다.
이 번역 이후 영어 소스가 변경되었습니다. 일부 정보는 최신 정보가 아닐 수 있습니다.
이 페이지는 자동으로 번역되었습니다. 영어 버전은 권위가 있습니다.
각 프로젝트에는 자체 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가 표시됩니다.
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입니다.
}
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,
)
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
}
Studio에서(또는 POST /v1/auth/admin/signing-keys/rotate 및 service_role 키를 사용하여) 키를 순환하면 새 토큰마다 새 키 서명이 만들어집니다. 이전 키는 24시간 동안 JWKS에 유지되므로 순환 전에 서명된 토큰은 계속 확인됩니다. 유출된 키는 더 이상 활성 키가 아닌 경우 DELETE /v1/auth/admin/signing-keys/<kid>를 사용하여 취소할 수 있으며 그런 다음 JWKS에서 제거되고 거부됩니다.
정보
JavaScript SDK에서 aura.auth.getClaims()는 이미 이 JWKS를 사용하여 로컬에서 세션 토큰을 확인하고 실제 클레임을 반환합니다.