e39caa3c80
Proof #3 now supports the production asymmetric path, not just the dev shared secret. - context-attestation.ts: PublicKeyResolverPort seam; verify() picks ES256 (JWKS by kid) when the client has a jwksUri, else HS256 (dev). signDevAttestationES256 helper. - attestation-stores.ts: JwksPublicKeyResolver (jwks-rsa, one cached client per URI, refetch on rotation, fail-closed to NO_KEY). - attestation.module.ts: inject the resolver into the verifier; dev-seed the client as clientType APPSHELL (it is the CRM browser-flow parent per the July-12 notes). - rename the registered client crm-support-widget -> appshell-crm (the name reflects the attesting parent, not a widget). - specs: ES256 (valid via JWKS, wrong key -> BAD_SIGNATURE, unknown kid -> NO_KEY, no resolver -> NO_KEY) + two stolen-token gate cases (wrong app binding -> APP_MISMATCH, wrong audience -> WRONG_AUDIENCE). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
48 lines
1.4 KiB
JSON
48 lines
1.4 KiB
JSON
{
|
|
"name": "@insignia/iios-service",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"build": "nest build",
|
|
"start": "nest start",
|
|
"dev": "nest start --watch",
|
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
"prisma:generate": "prisma generate",
|
|
"prisma:migrate": "prisma migrate dev",
|
|
"prisma:studio": "prisma studio"
|
|
},
|
|
"dependencies": {
|
|
"@insignia/iios-adapter-sdk": "workspace:*",
|
|
"@insignia/iios-contracts": "workspace:*",
|
|
"@nestjs/common": "^11.1.27",
|
|
"@nestjs/core": "^11.1.27",
|
|
"@nestjs/platform-express": "^11.1.27",
|
|
"@nestjs/platform-socket.io": "^11.1.27",
|
|
"@nestjs/websockets": "^11.1.27",
|
|
"@prisma/client": "^6.2.1",
|
|
"@socket.io/redis-adapter": "^8.3.0",
|
|
"class-transformer": "^0.5.1",
|
|
"class-validator": "^0.15.1",
|
|
"dotenv": "^16.4.7",
|
|
"ioredis": "^5.11.1",
|
|
"jsonwebtoken": "^9.0.3",
|
|
"jwks-rsa": "^4.1.0",
|
|
"prisma": "^6.2.1",
|
|
"reflect-metadata": "^0.2.2",
|
|
"rxjs": "^7.8.2",
|
|
"socket.io": "^4.8.3",
|
|
"web-push": "^3.6.7"
|
|
},
|
|
"devDependencies": {
|
|
"@insignia/iios-testkit": "workspace:*",
|
|
"@nestjs/cli": "^11.0.23",
|
|
"@nestjs/schematics": "^11.1.0",
|
|
"@types/express": "^5.0.6",
|
|
"@types/jsonwebtoken": "^9.0.10",
|
|
"@types/node": "^26.0.1",
|
|
"@types/web-push": "^3.6.4",
|
|
"socket.io-client": "^4.8.3",
|
|
"typescript": "^5.7.3"
|
|
}
|
|
}
|