Archived
四项校验顺序即安全要点:algorithms 写死 RS256(绝不读 token header 的 alg,否则 alg:none 可绕过)、issuer、audience、clockTolerance 30 秒;jose 的错误经 explainJoseError 翻成人话后包成 TokenRejectedError,排错省时间。测试用 createLocalJWKSet 造本地 JWKS 当 Keycloak 替身,不联网,验签逻辑本身走同一个 jwtVerify。zod 的 .optional() 与本仓 exactOptionalPropertyTypes 有摩擦, 按 claims.ts::identityOf 已有的手法(undefined 就不带键)加了 toVerifiedClaims 做收窄,详见 task-3-report.md。
38 lines
945 B
JSON
38 lines
945 B
JSON
{
|
|
"name": "@app/api",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"exports": {
|
|
".": "./src/app/main.ts"
|
|
},
|
|
"scripts": {
|
|
"dev": "tsup --watch --onSuccess \"node dist/main.js\"",
|
|
"build": "tsup",
|
|
"start": "node dist/main.js",
|
|
"seed": "node dist/seed.js",
|
|
"migrate": "node dist/migrate.js",
|
|
"set-password": "node dist/set-password.js",
|
|
"reset-runs": "node dist/reset-runs.js",
|
|
"install-activities": "node dist/install-activities.js"
|
|
},
|
|
"dependencies": {
|
|
"@ai-sdk/openai-compatible": "^3.0.14",
|
|
"@hono/node-server": "^2.0.12",
|
|
"@mastra/core": "^1.53.0",
|
|
"@mastra/observability": "^1.16.2",
|
|
"ai": "^7.0.37",
|
|
"ajv": "^8.20.0",
|
|
"ajv-formats": "^3.0.1",
|
|
"drizzle-orm": "^0.45.2",
|
|
"hono": "^4.12.32",
|
|
"jose": "^5.10.0",
|
|
"pg": "^8.22.0",
|
|
"pg-boss": "^12.26.3",
|
|
"zod": "^4.4.3"
|
|
},
|
|
"devDependencies": {
|
|
"@types/pg": "^8.20.0"
|
|
}
|
|
}
|