Files
auth/test/create.ts
2026-01-25 02:05:23 +08:00

39 lines
1.0 KiB
TypeScript

import * as jose from 'jose';
import { signJWT, decodeJWT, verifyJWT } from '../src/auth.ts';
import { getValues } from '../src/jwks/get.ts';
const payload = {
iss: "https://convex.kevisual.cn",
sub: "user:123456",
aud: "convex-app",
name: "John Doe",
email: "john.doe@example.com",
// exp: Math.floor(Date.now() / 1000) - (2 * 60 * 60) // 2 hours from now
}
const createToken = async () => {
const { privateJWK, privateKeyPEM } = getValues();
const token = await signJWT(payload, privateKeyPEM);
console.log('Generated JWT:', token);
// console.log('expited at:', new Date(payload.exp * 1000).toLocaleString());
return token;
}
const token = await createToken()
const decode = decodeJWT(token)
console.log('Decoded JWT:', decode);
const verify = async () => {
const { publicKeyPEM, privateJWK, jwks } = getValues();
try {
const verifiedPayload = await verifyJWT(token, publicKeyPEM);
console.log('Verified JWT payload:', verifiedPayload);
} catch (error) {
console.error('Verification failed:', error);
}
}
await verify();