mcp-auth-server 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +207 -2
- package/bin/keygen.mjs +26 -0
- package/lib/adapters/express/express.middleware.d.ts +4 -0
- package/lib/adapters/express/express.middleware.js +23 -0
- package/lib/adapters/express/express.middleware.js.map +1 -0
- package/lib/adapters/fastify/fastify.plugin.d.ts +4 -0
- package/lib/adapters/fastify/fastify.plugin.js +32 -0
- package/lib/adapters/fastify/fastify.plugin.js.map +1 -0
- package/lib/adapters/fetch/create.fetch.handler.d.ts +3 -0
- package/lib/adapters/fetch/create.fetch.handler.js +13 -0
- package/lib/adapters/fetch/create.fetch.handler.js.map +1 -0
- package/lib/adapters/fetch/to.http.request.d.ts +3 -0
- package/lib/adapters/fetch/to.http.request.js +22 -0
- package/lib/adapters/fetch/to.http.request.js.map +1 -0
- package/lib/adapters/fetch/to.response.d.ts +3 -0
- package/lib/adapters/fetch/to.response.js +10 -0
- package/lib/adapters/fetch/to.response.js.map +1 -0
- package/lib/adapters/koa/koa.middleware.d.ts +4 -0
- package/lib/adapters/koa/koa.middleware.js +19 -0
- package/lib/adapters/koa/koa.middleware.js.map +1 -0
- package/lib/adapters/node/create.node.handler.d.ts +4 -0
- package/lib/adapters/node/create.node.handler.js +16 -0
- package/lib/adapters/node/create.node.handler.js.map +1 -0
- package/lib/adapters/node/node.ssrf.guard.d.ts +2 -0
- package/lib/adapters/node/node.ssrf.guard.js +16 -0
- package/lib/adapters/node/node.ssrf.guard.js.map +1 -0
- package/lib/adapters/node/parse.node.body.d.ts +3 -0
- package/lib/adapters/node/parse.node.body.js +16 -0
- package/lib/adapters/node/parse.node.body.js.map +1 -0
- package/lib/adapters/node/read.node.body.d.ts +3 -0
- package/lib/adapters/node/read.node.body.js +10 -0
- package/lib/adapters/node/read.node.body.js.map +1 -0
- package/lib/adapters/node/to.node.http.request.d.ts +4 -0
- package/lib/adapters/node/to.node.http.request.js +20 -0
- package/lib/adapters/node/to.node.http.request.js.map +1 -0
- package/lib/adapters/node/write.node.response.d.ts +4 -0
- package/lib/adapters/node/write.node.response.js +10 -0
- package/lib/adapters/node/write.node.response.js.map +1 -0
- package/lib/cache/lru.metadata.cache.d.ts +10 -0
- package/lib/cache/lru.metadata.cache.js +31 -0
- package/lib/cache/lru.metadata.cache.js.map +1 -0
- package/lib/functions/body/parse.body.d.ts +2 -0
- package/lib/functions/body/parse.body.js +20 -0
- package/lib/functions/body/parse.body.js.map +1 -0
- package/lib/functions/body/parse.query.d.ts +2 -0
- package/lib/functions/body/parse.query.js +16 -0
- package/lib/functions/body/parse.query.js.map +1 -0
- package/lib/functions/cimd/assert.public.host.d.ts +2 -0
- package/lib/functions/cimd/assert.public.host.js +15 -0
- package/lib/functions/cimd/assert.public.host.js.map +1 -0
- package/lib/functions/cimd/cache.seconds.d.ts +2 -0
- package/lib/functions/cimd/cache.seconds.js +16 -0
- package/lib/functions/cimd/cache.seconds.js.map +1 -0
- package/lib/functions/cimd/create.metadata.resolver.d.ts +5 -0
- package/lib/functions/cimd/create.metadata.resolver.js +53 -0
- package/lib/functions/cimd/create.metadata.resolver.js.map +1 -0
- package/lib/functions/cimd/host.matches.d.ts +2 -0
- package/lib/functions/cimd/host.matches.js +5 -0
- package/lib/functions/cimd/host.matches.js.map +1 -0
- package/lib/functions/cimd/is.metadata.client.id.d.ts +2 -0
- package/lib/functions/cimd/is.metadata.client.id.js +14 -0
- package/lib/functions/cimd/is.metadata.client.id.js.map +1 -0
- package/lib/functions/cimd/is.private.ipv4.d.ts +2 -0
- package/lib/functions/cimd/is.private.ipv4.js +18 -0
- package/lib/functions/cimd/is.private.ipv4.js.map +1 -0
- package/lib/functions/cimd/is.private.ipv6.d.ts +2 -0
- package/lib/functions/cimd/is.private.ipv6.js +17 -0
- package/lib/functions/cimd/is.private.ipv6.js.map +1 -0
- package/lib/functions/cimd/read.limited.d.ts +2 -0
- package/lib/functions/cimd/read.limited.js +32 -0
- package/lib/functions/cimd/read.limited.js.map +1 -0
- package/lib/functions/cimd/validate.metadata.document.d.ts +3 -0
- package/lib/functions/cimd/validate.metadata.document.js +25 -0
- package/lib/functions/cimd/validate.metadata.document.js.map +1 -0
- package/lib/functions/consent/consent.styles.d.ts +2 -0
- package/lib/functions/consent/consent.styles.js +20 -0
- package/lib/functions/consent/consent.styles.js.map +1 -0
- package/lib/functions/consent/escape.html.d.ts +2 -0
- package/lib/functions/consent/escape.html.js +5 -0
- package/lib/functions/consent/escape.html.js.map +1 -0
- package/lib/functions/consent/render.default.consent.d.ts +3 -0
- package/lib/functions/consent/render.default.consent.js +50 -0
- package/lib/functions/consent/render.default.consent.js.map +1 -0
- package/lib/functions/crypto/random.id.d.ts +2 -0
- package/lib/functions/crypto/random.id.js +5 -0
- package/lib/functions/crypto/random.id.js.map +1 -0
- package/lib/functions/crypto/random.token.d.ts +2 -0
- package/lib/functions/crypto/random.token.js +9 -0
- package/lib/functions/crypto/random.token.js.map +1 -0
- package/lib/functions/crypto/sha256.base64.url.d.ts +2 -0
- package/lib/functions/crypto/sha256.base64.url.js +10 -0
- package/lib/functions/crypto/sha256.base64.url.js.map +1 -0
- package/lib/functions/crypto/sha256.digest.d.ts +2 -0
- package/lib/functions/crypto/sha256.digest.js +5 -0
- package/lib/functions/crypto/sha256.digest.js.map +1 -0
- package/lib/functions/crypto/sha256.hex.d.ts +2 -0
- package/lib/functions/crypto/sha256.hex.js +9 -0
- package/lib/functions/crypto/sha256.hex.js.map +1 -0
- package/lib/functions/crypto/to.base64.url.d.ts +2 -0
- package/lib/functions/crypto/to.base64.url.js +10 -0
- package/lib/functions/crypto/to.base64.url.js.map +1 -0
- package/lib/functions/http/form.params.d.ts +2 -0
- package/lib/functions/http/form.params.js +5 -0
- package/lib/functions/http/form.params.js.map +1 -0
- package/lib/functions/http/header.value.d.ts +3 -0
- package/lib/functions/http/header.value.js +8 -0
- package/lib/functions/http/header.value.js.map +1 -0
- package/lib/functions/http/json.response.d.ts +3 -0
- package/lib/functions/http/json.response.js +9 -0
- package/lib/functions/http/json.response.js.map +1 -0
- package/lib/functions/http/oauth.error.response.d.ts +3 -0
- package/lib/functions/http/oauth.error.response.js +9 -0
- package/lib/functions/http/oauth.error.response.js.map +1 -0
- package/lib/functions/http/plain.error.response.d.ts +3 -0
- package/lib/functions/http/plain.error.response.js +5 -0
- package/lib/functions/http/plain.error.response.js.map +1 -0
- package/lib/functions/http/query.param.d.ts +3 -0
- package/lib/functions/http/query.param.js +8 -0
- package/lib/functions/http/query.param.js.map +1 -0
- package/lib/functions/http/redirect.response.d.ts +3 -0
- package/lib/functions/http/redirect.response.js +5 -0
- package/lib/functions/http/redirect.response.js.map +1 -0
- package/lib/functions/http/text.value.d.ts +2 -0
- package/lib/functions/http/text.value.js +5 -0
- package/lib/functions/http/text.value.js.map +1 -0
- package/lib/functions/http/trim.trailing.slashes.d.ts +2 -0
- package/lib/functions/http/trim.trailing.slashes.js +10 -0
- package/lib/functions/http/trim.trailing.slashes.js.map +1 -0
- package/lib/functions/jwt/sign.access.token.d.ts +4 -0
- package/lib/functions/jwt/sign.access.token.js +21 -0
- package/lib/functions/jwt/sign.access.token.js.map +1 -0
- package/lib/functions/jwt/verify.access.token.d.ts +4 -0
- package/lib/functions/jwt/verify.access.token.js +16 -0
- package/lib/functions/jwt/verify.access.token.js.map +1 -0
- package/lib/functions/keys/der.length.d.ts +2 -0
- package/lib/functions/keys/der.length.js +12 -0
- package/lib/functions/keys/der.length.js.map +1 -0
- package/lib/functions/keys/is.rsa.key.d.ts +2 -0
- package/lib/functions/keys/is.rsa.key.js +8 -0
- package/lib/functions/keys/is.rsa.key.js.map +1 -0
- package/lib/functions/keys/normalize.pem.d.ts +2 -0
- package/lib/functions/keys/normalize.pem.js +16 -0
- package/lib/functions/keys/normalize.pem.js.map +1 -0
- package/lib/functions/keys/pkcs1.to.pkcs8.d.ts +2 -0
- package/lib/functions/keys/pkcs1.to.pkcs8.js +14 -0
- package/lib/functions/keys/pkcs1.to.pkcs8.js.map +1 -0
- package/lib/functions/keys/resolve.key.pair.d.ts +3 -0
- package/lib/functions/keys/resolve.key.pair.js +27 -0
- package/lib/functions/keys/resolve.key.pair.js.map +1 -0
- package/lib/functions/keys/signing.key.from.env.d.ts +2 -0
- package/lib/functions/keys/signing.key.from.env.js +14 -0
- package/lib/functions/keys/signing.key.from.env.js.map +1 -0
- package/lib/functions/keys/wrap.pem.d.ts +2 -0
- package/lib/functions/keys/wrap.pem.js +11 -0
- package/lib/functions/keys/wrap.pem.js.map +1 -0
- package/lib/functions/redirect/build.error.redirect.d.ts +2 -0
- package/lib/functions/redirect/build.error.redirect.js +9 -0
- package/lib/functions/redirect/build.error.redirect.js.map +1 -0
- package/lib/functions/redirect/build.redirect.d.ts +2 -0
- package/lib/functions/redirect/build.redirect.js +12 -0
- package/lib/functions/redirect/build.redirect.js.map +1 -0
- package/lib/functions/redirect/describe.redirect.target.d.ts +2 -0
- package/lib/functions/redirect/describe.redirect.target.js +8 -0
- package/lib/functions/redirect/describe.redirect.target.js.map +1 -0
- package/lib/functions/redirect/is.allowed.redirect.uri.d.ts +3 -0
- package/lib/functions/redirect/is.allowed.redirect.uri.js +19 -0
- package/lib/functions/redirect/is.allowed.redirect.uri.js.map +1 -0
- package/lib/functions/redirect/is.loopback.redirect.d.ts +2 -0
- package/lib/functions/redirect/is.loopback.redirect.js +13 -0
- package/lib/functions/redirect/is.loopback.redirect.js.map +1 -0
- package/lib/functions/redirect/is.safe.metadata.redirect.uri.d.ts +2 -0
- package/lib/functions/redirect/is.safe.metadata.redirect.uri.js +20 -0
- package/lib/functions/redirect/is.safe.metadata.redirect.uri.js.map +1 -0
- package/lib/functions/redirect/parse.url.d.ts +2 -0
- package/lib/functions/redirect/parse.url.js +14 -0
- package/lib/functions/redirect/parse.url.js.map +1 -0
- package/lib/functions/server/attach.and.continue.d.ts +6 -0
- package/lib/functions/server/attach.and.continue.js +15 -0
- package/lib/functions/server/attach.and.continue.js.map +1 -0
- package/lib/functions/server/authenticate.request.d.ts +5 -0
- package/lib/functions/server/authenticate.request.js +24 -0
- package/lib/functions/server/authenticate.request.js.map +1 -0
- package/lib/functions/server/awaiting.consent.d.ts +5 -0
- package/lib/functions/server/awaiting.consent.js +18 -0
- package/lib/functions/server/awaiting.consent.js.map +1 -0
- package/lib/functions/server/build.routes.d.ts +4 -0
- package/lib/functions/server/build.routes.js +40 -0
- package/lib/functions/server/build.routes.js.map +1 -0
- package/lib/functions/server/build.upstream.context.d.ts +6 -0
- package/lib/functions/server/build.upstream.context.js +11 -0
- package/lib/functions/server/build.upstream.context.js.map +1 -0
- package/lib/functions/server/challenge.response.d.ts +4 -0
- package/lib/functions/server/challenge.response.js +14 -0
- package/lib/functions/server/challenge.response.js.map +1 -0
- package/lib/functions/server/continue.with.user.d.ts +5 -0
- package/lib/functions/server/continue.with.user.js +18 -0
- package/lib/functions/server/continue.with.user.js.map +1 -0
- package/lib/functions/server/create.client.resolver.d.ts +6 -0
- package/lib/functions/server/create.client.resolver.js +26 -0
- package/lib/functions/server/create.client.resolver.js.map +1 -0
- package/lib/functions/server/create.mcp.auth.context.d.ts +4 -0
- package/lib/functions/server/create.mcp.auth.context.js +38 -0
- package/lib/functions/server/create.mcp.auth.context.js.map +1 -0
- package/lib/functions/server/create.mcp.auth.d.ts +4 -0
- package/lib/functions/server/create.mcp.auth.js +25 -0
- package/lib/functions/server/create.mcp.auth.js.map +1 -0
- package/lib/functions/server/deny.authorization.d.ts +5 -0
- package/lib/functions/server/deny.authorization.js +13 -0
- package/lib/functions/server/deny.authorization.js.map +1 -0
- package/lib/functions/server/exchange.authorization.code.d.ts +4 -0
- package/lib/functions/server/exchange.authorization.code.js +32 -0
- package/lib/functions/server/exchange.authorization.code.js.map +1 -0
- package/lib/functions/server/find.route.d.ts +4 -0
- package/lib/functions/server/find.route.js +5 -0
- package/lib/functions/server/find.route.js.map +1 -0
- package/lib/functions/server/handle.request.d.ts +6 -0
- package/lib/functions/server/handle.request.js +21 -0
- package/lib/functions/server/handle.request.js.map +1 -0
- package/lib/functions/server/has.credentials.d.ts +3 -0
- package/lib/functions/server/has.credentials.js +9 -0
- package/lib/functions/server/has.credentials.js.map +1 -0
- package/lib/functions/server/issue.authorization.code.d.ts +5 -0
- package/lib/functions/server/issue.authorization.code.js +24 -0
- package/lib/functions/server/issue.authorization.code.js.map +1 -0
- package/lib/functions/server/issue.tokens.d.ts +4 -0
- package/lib/functions/server/issue.tokens.js +30 -0
- package/lib/functions/server/issue.tokens.js.map +1 -0
- package/lib/functions/server/load.pending.d.ts +5 -0
- package/lib/functions/server/load.pending.js +13 -0
- package/lib/functions/server/load.pending.js.map +1 -0
- package/lib/functions/server/rotate.refresh.token.d.ts +4 -0
- package/lib/functions/server/rotate.refresh.token.js +33 -0
- package/lib/functions/server/rotate.refresh.token.js.map +1 -0
- package/lib/functions/server/token.failure.d.ts +3 -0
- package/lib/functions/server/token.failure.js +9 -0
- package/lib/functions/server/token.failure.js.map +1 -0
- package/lib/functions/sql/from.better.sqlite3.d.ts +10 -0
- package/lib/functions/sql/from.better.sqlite3.js +11 -0
- package/lib/functions/sql/from.better.sqlite3.js.map +1 -0
- package/lib/functions/sql/from.bun.sqlite.d.ts +7 -0
- package/lib/functions/sql/from.bun.sqlite.js +5 -0
- package/lib/functions/sql/from.bun.sqlite.js.map +1 -0
- package/lib/functions/sql/from.d1.d.ts +11 -0
- package/lib/functions/sql/from.d1.js +8 -0
- package/lib/functions/sql/from.d1.js.map +1 -0
- package/lib/functions/sql/from.node.sqlite.d.ts +7 -0
- package/lib/functions/sql/from.node.sqlite.js +5 -0
- package/lib/functions/sql/from.node.sqlite.js.map +1 -0
- package/lib/functions/sql/from.pg.d.ts +7 -0
- package/lib/functions/sql/from.pg.js +5 -0
- package/lib/functions/sql/from.pg.js.map +1 -0
- package/lib/functions/sql/from.postgres.js.d.ts +5 -0
- package/lib/functions/sql/from.postgres.js.js +5 -0
- package/lib/functions/sql/from.postgres.js.js.map +1 -0
- package/lib/functions/sql/optional.date.d.ts +2 -0
- package/lib/functions/sql/optional.date.js +5 -0
- package/lib/functions/sql/optional.date.js.map +1 -0
- package/lib/functions/sql/optional.number.d.ts +2 -0
- package/lib/functions/sql/optional.number.js +5 -0
- package/lib/functions/sql/optional.number.js.map +1 -0
- package/lib/functions/sql/optional.text.d.ts +2 -0
- package/lib/functions/sql/optional.text.js +5 -0
- package/lib/functions/sql/optional.text.js.map +1 -0
- package/lib/functions/sql/row.to.client.d.ts +4 -0
- package/lib/functions/sql/row.to.client.js +18 -0
- package/lib/functions/sql/row.to.client.js.map +1 -0
- package/lib/functions/sql/row.to.code.d.ts +4 -0
- package/lib/functions/sql/row.to.code.js +21 -0
- package/lib/functions/sql/row.to.code.js.map +1 -0
- package/lib/functions/sql/row.to.pending.d.ts +4 -0
- package/lib/functions/sql/row.to.pending.js +21 -0
- package/lib/functions/sql/row.to.pending.js.map +1 -0
- package/lib/functions/sql/row.to.refresh.token.d.ts +4 -0
- package/lib/functions/sql/row.to.refresh.token.js +22 -0
- package/lib/functions/sql/row.to.refresh.token.js.map +1 -0
- package/lib/functions/sql/sql.schema.d.ts +3 -0
- package/lib/functions/sql/sql.schema.js +62 -0
- package/lib/functions/sql/sql.schema.js.map +1 -0
- package/lib/functions/sql/to.dialect.sql.d.ts +3 -0
- package/lib/functions/sql/to.dialect.sql.js +13 -0
- package/lib/functions/sql/to.dialect.sql.js.map +1 -0
- package/lib/functions/upstream/app.session.upstream.d.ts +4 -0
- package/lib/functions/upstream/app.session.upstream.js +18 -0
- package/lib/functions/upstream/app.session.upstream.js.map +1 -0
- package/lib/functions/upstream/entra.upstream.d.ts +11 -0
- package/lib/functions/upstream/entra.upstream.js +16 -0
- package/lib/functions/upstream/entra.upstream.js.map +1 -0
- package/lib/functions/upstream/oidc.upstream.d.ts +4 -0
- package/lib/functions/upstream/oidc.upstream.js +82 -0
- package/lib/functions/upstream/oidc.upstream.js.map +1 -0
- package/lib/functions/upstream/verify.id.token.d.ts +3 -0
- package/lib/functions/upstream/verify.id.token.js +16 -0
- package/lib/functions/upstream/verify.id.token.js.map +1 -0
- package/lib/handlers/authorization.server.metadata.handler.d.ts +4 -0
- package/lib/handlers/authorization.server.metadata.handler.js +24 -0
- package/lib/handlers/authorization.server.metadata.handler.js.map +1 -0
- package/lib/handlers/authorize.handler.d.ts +5 -0
- package/lib/handlers/authorize.handler.js +58 -0
- package/lib/handlers/authorize.handler.js.map +1 -0
- package/lib/handlers/callback.handler.d.ts +5 -0
- package/lib/handlers/callback.handler.js +32 -0
- package/lib/handlers/callback.handler.js.map +1 -0
- package/lib/handlers/consent.decision.handler.d.ts +5 -0
- package/lib/handlers/consent.decision.handler.js +30 -0
- package/lib/handlers/consent.decision.handler.js.map +1 -0
- package/lib/handlers/consent.page.handler.d.ts +5 -0
- package/lib/handlers/consent.page.handler.js +43 -0
- package/lib/handlers/consent.page.handler.js.map +1 -0
- package/lib/handlers/protected.resource.metadata.handler.d.ts +4 -0
- package/lib/handlers/protected.resource.metadata.handler.js +9 -0
- package/lib/handlers/protected.resource.metadata.handler.js.map +1 -0
- package/lib/handlers/register.handler.d.ts +5 -0
- package/lib/handlers/register.handler.js +44 -0
- package/lib/handlers/register.handler.js.map +1 -0
- package/lib/handlers/resume.handler.d.ts +5 -0
- package/lib/handlers/resume.handler.js +25 -0
- package/lib/handlers/resume.handler.js.map +1 -0
- package/lib/handlers/revoke.handler.d.ts +5 -0
- package/lib/handlers/revoke.handler.js +27 -0
- package/lib/handlers/revoke.handler.js.map +1 -0
- package/lib/handlers/token.handler.d.ts +5 -0
- package/lib/handlers/token.handler.js +22 -0
- package/lib/handlers/token.handler.js.map +1 -0
- package/lib/mcp.auth.entra.d.ts +4 -0
- package/lib/mcp.auth.entra.js +11 -0
- package/lib/mcp.auth.entra.js.map +1 -0
- package/lib/mcp.auth.express.d.ts +4 -0
- package/lib/mcp.auth.express.js +11 -0
- package/lib/mcp.auth.express.js.map +1 -0
- package/lib/mcp.auth.fastify.d.ts +4 -0
- package/lib/mcp.auth.fastify.js +11 -0
- package/lib/mcp.auth.fastify.js.map +1 -0
- package/lib/mcp.auth.fetch.d.ts +6 -0
- package/lib/mcp.auth.fetch.js +15 -0
- package/lib/mcp.auth.fetch.js.map +1 -0
- package/lib/mcp.auth.koa.d.ts +4 -0
- package/lib/mcp.auth.koa.js +11 -0
- package/lib/mcp.auth.koa.js.map +1 -0
- package/lib/mcp.auth.memory.d.ts +4 -0
- package/lib/mcp.auth.memory.js +11 -0
- package/lib/mcp.auth.memory.js.map +1 -0
- package/lib/mcp.auth.mongodb.d.ts +6 -0
- package/lib/mcp.auth.mongodb.js +11 -0
- package/lib/mcp.auth.mongodb.js.map +1 -0
- package/lib/mcp.auth.node.d.ts +9 -0
- package/lib/mcp.auth.node.js +21 -0
- package/lib/mcp.auth.node.js.map +1 -0
- package/lib/mcp.auth.postgres.d.ts +11 -0
- package/lib/mcp.auth.postgres.js +20 -0
- package/lib/mcp.auth.postgres.js.map +1 -0
- package/lib/mcp.auth.server.d.ts +42 -0
- package/lib/mcp.auth.server.js +35 -0
- package/lib/mcp.auth.server.js.map +1 -0
- package/lib/mcp.auth.sqlite.d.ts +13 -0
- package/lib/mcp.auth.sqlite.js +24 -0
- package/lib/mcp.auth.sqlite.js.map +1 -0
- package/lib/storage/memory.storage.d.ts +30 -0
- package/lib/storage/memory.storage.js +91 -0
- package/lib/storage/memory.storage.js.map +1 -0
- package/lib/storage/mongodb.storage.d.ts +41 -0
- package/lib/storage/mongodb.storage.js +172 -0
- package/lib/storage/mongodb.storage.js.map +1 -0
- package/lib/storage/sql.storage.d.ts +35 -0
- package/lib/storage/sql.storage.js +128 -0
- package/lib/storage/sql.storage.js.map +1 -0
- package/lib/types/access.token.input.type.d.ts +9 -0
- package/lib/types/access.token.input.type.js +3 -0
- package/lib/types/access.token.input.type.js.map +1 -0
- package/lib/types/app.session.upstream.options.type.d.ts +7 -0
- package/lib/types/app.session.upstream.options.type.js +3 -0
- package/lib/types/app.session.upstream.options.type.js.map +1 -0
- package/lib/types/authenticate.result.type.d.ts +10 -0
- package/lib/types/authenticate.result.type.js +3 -0
- package/lib/types/authenticate.result.type.js.map +1 -0
- package/lib/types/authenticated.user.type.d.ts +5 -0
- package/lib/types/authenticated.user.type.js +3 -0
- package/lib/types/authenticated.user.type.js.map +1 -0
- package/lib/types/authorization.code.record.type.d.ts +11 -0
- package/lib/types/authorization.code.record.type.js +3 -0
- package/lib/types/authorization.code.record.type.js.map +1 -0
- package/lib/types/cimd.options.type.d.ts +16 -0
- package/lib/types/cimd.options.type.js +3 -0
- package/lib/types/cimd.options.type.js.map +1 -0
- package/lib/types/client.metadata.type.d.ts +7 -0
- package/lib/types/client.metadata.type.js +3 -0
- package/lib/types/client.metadata.type.js.map +1 -0
- package/lib/types/client.record.type.d.ts +11 -0
- package/lib/types/client.record.type.js +3 -0
- package/lib/types/client.record.type.js.map +1 -0
- package/lib/types/consent.model.type.d.ts +15 -0
- package/lib/types/consent.model.type.js +3 -0
- package/lib/types/consent.model.type.js.map +1 -0
- package/lib/types/consent.record.type.d.ts +5 -0
- package/lib/types/consent.record.type.js +3 -0
- package/lib/types/consent.record.type.js.map +1 -0
- package/lib/types/http.request.type.d.ts +9 -0
- package/lib/types/http.request.type.js +3 -0
- package/lib/types/http.request.type.js.map +1 -0
- package/lib/types/http.response.type.d.ts +6 -0
- package/lib/types/http.response.type.js +3 -0
- package/lib/types/http.response.type.js.map +1 -0
- package/lib/types/i.metadata.cache.d.ts +6 -0
- package/lib/types/i.metadata.cache.js +3 -0
- package/lib/types/i.metadata.cache.js.map +1 -0
- package/lib/types/i.storage.d.ts +25 -0
- package/lib/types/i.storage.js +3 -0
- package/lib/types/i.storage.js.map +1 -0
- package/lib/types/i.upstream.d.ts +11 -0
- package/lib/types/i.upstream.js +3 -0
- package/lib/types/i.upstream.js.map +1 -0
- package/lib/types/key.pair.type.d.ts +5 -0
- package/lib/types/key.pair.type.js +3 -0
- package/lib/types/key.pair.type.js.map +1 -0
- package/lib/types/logger.type.d.ts +6 -0
- package/lib/types/logger.type.js +3 -0
- package/lib/types/logger.type.js.map +1 -0
- package/lib/types/mcp.auth.context.type.d.ts +29 -0
- package/lib/types/mcp.auth.context.type.js +3 -0
- package/lib/types/mcp.auth.context.type.js.map +1 -0
- package/lib/types/mcp.auth.options.type.d.ts +39 -0
- package/lib/types/mcp.auth.options.type.js +3 -0
- package/lib/types/mcp.auth.options.type.js.map +1 -0
- package/lib/types/mcp.auth.type.d.ts +14 -0
- package/lib/types/mcp.auth.type.js +3 -0
- package/lib/types/mcp.auth.type.js.map +1 -0
- package/lib/types/metadata.resolution.type.d.ts +9 -0
- package/lib/types/metadata.resolution.type.js +3 -0
- package/lib/types/metadata.resolution.type.js.map +1 -0
- package/lib/types/mongo.storage.options.type.d.ts +13 -0
- package/lib/types/mongo.storage.options.type.js +3 -0
- package/lib/types/mongo.storage.options.type.js.map +1 -0
- package/lib/types/oidc.upstream.options.type.d.ts +9 -0
- package/lib/types/oidc.upstream.options.type.js +3 -0
- package/lib/types/oidc.upstream.options.type.js.map +1 -0
- package/lib/types/pending.authorization.type.d.ts +14 -0
- package/lib/types/pending.authorization.type.js +3 -0
- package/lib/types/pending.authorization.type.js.map +1 -0
- package/lib/types/pending.filter.type.d.ts +5 -0
- package/lib/types/pending.filter.type.js +3 -0
- package/lib/types/pending.filter.type.js.map +1 -0
- package/lib/types/redirect.policy.type.d.ts +5 -0
- package/lib/types/redirect.policy.type.js +3 -0
- package/lib/types/redirect.policy.type.js.map +1 -0
- package/lib/types/refresh.token.record.type.d.ts +11 -0
- package/lib/types/refresh.token.record.type.js +3 -0
- package/lib/types/refresh.token.record.type.js.map +1 -0
- package/lib/types/resolved.client.type.d.ts +7 -0
- package/lib/types/resolved.client.type.js +3 -0
- package/lib/types/resolved.client.type.js.map +1 -0
- package/lib/types/route.name.type.d.ts +2 -0
- package/lib/types/route.name.type.js +3 -0
- package/lib/types/route.name.type.js.map +1 -0
- package/lib/types/route.type.d.ts +10 -0
- package/lib/types/route.type.js +3 -0
- package/lib/types/route.type.js.map +1 -0
- package/lib/types/sql.dialect.type.d.ts +2 -0
- package/lib/types/sql.dialect.type.js +3 -0
- package/lib/types/sql.dialect.type.js.map +1 -0
- package/lib/types/sql.executor.type.d.ts +4 -0
- package/lib/types/sql.executor.type.js +3 -0
- package/lib/types/sql.executor.type.js.map +1 -0
- package/lib/types/sql.storage.options.type.d.ts +4 -0
- package/lib/types/sql.storage.options.type.js +3 -0
- package/lib/types/sql.storage.options.type.js.map +1 -0
- package/lib/types/upstream.begin.type.d.ts +9 -0
- package/lib/types/upstream.begin.type.js +3 -0
- package/lib/types/upstream.begin.type.js.map +1 -0
- package/lib/types/upstream.context.type.d.ts +10 -0
- package/lib/types/upstream.context.type.js +3 -0
- package/lib/types/upstream.context.type.js.map +1 -0
- package/lib/types/verify.result.type.d.ts +6 -0
- package/lib/types/verify.result.type.js +3 -0
- package/lib/types/verify.result.type.js.map +1 -0
- package/package.json +107 -5
- package/sql/postgres.sql +61 -0
- package/sql/sqlite.sql +61 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type AuthorizationCodeRecordType from '../types/authorization.code.record.type';
|
|
2
|
+
import type ClientRecordType from '../types/client.record.type';
|
|
3
|
+
import type ConsentRecordType from '../types/consent.record.type';
|
|
4
|
+
import type IStorage from '../types/i.storage';
|
|
5
|
+
import type PendingAuthorizationType from '../types/pending.authorization.type';
|
|
6
|
+
import type PendingFilterType from '../types/pending.filter.type';
|
|
7
|
+
import type RefreshTokenRecordType from '../types/refresh.token.record.type';
|
|
8
|
+
import type SqlDialectType from '../types/sql.dialect.type';
|
|
9
|
+
import type SqlExecutorType from '../types/sql.executor.type';
|
|
10
|
+
import type SqlStorageOptionsType from '../types/sql.storage.options.type';
|
|
11
|
+
export default class SqlStorage implements IStorage {
|
|
12
|
+
private readonly executor;
|
|
13
|
+
private readonly dialect;
|
|
14
|
+
private readonly prefix;
|
|
15
|
+
constructor(executor: SqlExecutorType, dialect: SqlDialectType, options?: SqlStorageOptionsType);
|
|
16
|
+
migrate(): Promise<void>;
|
|
17
|
+
private run;
|
|
18
|
+
private first;
|
|
19
|
+
getClient(clientId: string): Promise<ClientRecordType | null>;
|
|
20
|
+
saveClient(client: ClientRecordType): Promise<void>;
|
|
21
|
+
savePendingAuthorization(pending: PendingAuthorizationType): Promise<void>;
|
|
22
|
+
getPendingAuthorization(stateId: string, now: Date): Promise<PendingAuthorizationType | null>;
|
|
23
|
+
attachUserToPendingAuthorization(stateId: string, userId: string, now: Date, displayName?: string): Promise<PendingAuthorizationType | null>;
|
|
24
|
+
takePendingAuthorization(stateId: string, filter: PendingFilterType): Promise<PendingAuthorizationType | null>;
|
|
25
|
+
deletePendingAuthorization(stateId: string): Promise<void>;
|
|
26
|
+
saveAuthorizationCode(code: AuthorizationCodeRecordType): Promise<void>;
|
|
27
|
+
claimAuthorizationCode(codeHash: string, now: Date): Promise<AuthorizationCodeRecordType | null>;
|
|
28
|
+
saveRefreshToken(token: RefreshTokenRecordType): Promise<void>;
|
|
29
|
+
findRefreshToken(tokenHash: string): Promise<RefreshTokenRecordType | null>;
|
|
30
|
+
claimRefreshToken(tokenHash: string, now: Date): Promise<RefreshTokenRecordType | null>;
|
|
31
|
+
revokeRefreshTokenFamily(familyId: string, now: Date): Promise<void>;
|
|
32
|
+
hasConsent(clientId: string, userId: string): Promise<boolean>;
|
|
33
|
+
upsertConsent(consent: ConsentRecordType): Promise<void>;
|
|
34
|
+
deleteExpired(now: Date): Promise<void>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const optional_date_1 = __importDefault(require("../functions/sql/optional.date"));
|
|
7
|
+
const row_to_client_1 = __importDefault(require("../functions/sql/row.to.client"));
|
|
8
|
+
const row_to_code_1 = __importDefault(require("../functions/sql/row.to.code"));
|
|
9
|
+
const row_to_pending_1 = __importDefault(require("../functions/sql/row.to.pending"));
|
|
10
|
+
const row_to_refresh_token_1 = __importDefault(require("../functions/sql/row.to.refresh.token"));
|
|
11
|
+
const sql_schema_1 = __importDefault(require("../functions/sql/sql.schema"));
|
|
12
|
+
const to_dialect_sql_1 = __importDefault(require("../functions/sql/to.dialect.sql"));
|
|
13
|
+
class SqlStorage {
|
|
14
|
+
executor;
|
|
15
|
+
dialect;
|
|
16
|
+
prefix;
|
|
17
|
+
constructor(executor, dialect, options = {}) {
|
|
18
|
+
this.executor = executor;
|
|
19
|
+
this.dialect = dialect;
|
|
20
|
+
this.prefix = options.tablePrefix ?? 'mcp_oauth_';
|
|
21
|
+
}
|
|
22
|
+
async migrate() {
|
|
23
|
+
for (const statement of (0, sql_schema_1.default)(this.dialect, this.prefix))
|
|
24
|
+
await this.run(statement, []);
|
|
25
|
+
}
|
|
26
|
+
async run(sql, params) {
|
|
27
|
+
return (await this.executor((0, to_dialect_sql_1.default)(sql, this.dialect), params)) ?? [];
|
|
28
|
+
}
|
|
29
|
+
async first(sql, params) {
|
|
30
|
+
return (await this.run(sql, params))[0];
|
|
31
|
+
}
|
|
32
|
+
async getClient(clientId) {
|
|
33
|
+
const row = await this.first(`SELECT * FROM ${this.prefix}clients WHERE client_id = ?`, [clientId]);
|
|
34
|
+
return row ? (0, row_to_client_1.default)(row) : null;
|
|
35
|
+
}
|
|
36
|
+
async saveClient(client) {
|
|
37
|
+
await this.run(`INSERT INTO ${this.prefix}clients (client_id, client_name, redirect_uris, application_type, token_endpoint_auth_method, grant_types, response_types, created_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
38
|
+
client.clientId,
|
|
39
|
+
client.clientName ?? null,
|
|
40
|
+
JSON.stringify(client.redirectUris),
|
|
41
|
+
client.applicationType ?? null,
|
|
42
|
+
client.tokenEndpointAuthMethod,
|
|
43
|
+
JSON.stringify(client.grantTypes),
|
|
44
|
+
JSON.stringify(client.responseTypes),
|
|
45
|
+
client.createdAt.getTime()
|
|
46
|
+
]);
|
|
47
|
+
}
|
|
48
|
+
async savePendingAuthorization(pending) {
|
|
49
|
+
await this.run(`INSERT INTO ${this.prefix}pending_authorizations (state_id, client_id, client_name, redirect_uri, code_challenge, resource, client_state, upstream_code_verifier, user_id, user_display_name, expires_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
|
|
50
|
+
pending.stateId,
|
|
51
|
+
pending.clientId,
|
|
52
|
+
pending.clientName ?? null,
|
|
53
|
+
pending.redirectUri,
|
|
54
|
+
pending.codeChallenge,
|
|
55
|
+
pending.resource,
|
|
56
|
+
pending.clientState ?? null,
|
|
57
|
+
pending.upstreamCodeVerifier ?? null,
|
|
58
|
+
pending.userId ?? null,
|
|
59
|
+
pending.userDisplayName ?? null,
|
|
60
|
+
pending.expiresAt.getTime()
|
|
61
|
+
]);
|
|
62
|
+
}
|
|
63
|
+
async getPendingAuthorization(stateId, now) {
|
|
64
|
+
const row = await this.first(`SELECT * FROM ${this.prefix}pending_authorizations WHERE state_id = ? AND expires_at > ?`, [stateId, now.getTime()]);
|
|
65
|
+
return row ? (0, row_to_pending_1.default)(row) : null;
|
|
66
|
+
}
|
|
67
|
+
async attachUserToPendingAuthorization(stateId, userId, now, displayName) {
|
|
68
|
+
const row = await this.first(`UPDATE ${this.prefix}pending_authorizations SET user_id = ?, user_display_name = ? WHERE state_id = ? AND expires_at > ? AND user_id IS NULL RETURNING *`, [userId, displayName ?? null, stateId, now.getTime()]);
|
|
69
|
+
return row ? (0, row_to_pending_1.default)(row) : null;
|
|
70
|
+
}
|
|
71
|
+
async takePendingAuthorization(stateId, filter) {
|
|
72
|
+
let userClause = '';
|
|
73
|
+
if (true === filter.hasUser)
|
|
74
|
+
userClause = ' AND user_id IS NOT NULL';
|
|
75
|
+
if (false === filter.hasUser)
|
|
76
|
+
userClause = ' AND user_id IS NULL';
|
|
77
|
+
const row = await this.first(`DELETE FROM ${this.prefix}pending_authorizations WHERE state_id = ? AND expires_at > ?${userClause} RETURNING *`, [
|
|
78
|
+
stateId,
|
|
79
|
+
filter.now.getTime()
|
|
80
|
+
]);
|
|
81
|
+
return row ? (0, row_to_pending_1.default)(row) : null;
|
|
82
|
+
}
|
|
83
|
+
async deletePendingAuthorization(stateId) {
|
|
84
|
+
await this.run(`DELETE FROM ${this.prefix}pending_authorizations WHERE state_id = ?`, [stateId]);
|
|
85
|
+
}
|
|
86
|
+
async saveAuthorizationCode(code) {
|
|
87
|
+
await this.run(`INSERT INTO ${this.prefix}authorization_codes (code_hash, client_id, redirect_uri, code_challenge, resource, user_id, used_at, expires_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [code.codeHash, code.clientId, code.redirectUri, code.codeChallenge, code.resource, code.userId, (0, optional_date_1.default)(code.usedAt), code.expiresAt.getTime()]);
|
|
88
|
+
}
|
|
89
|
+
async claimAuthorizationCode(codeHash, now) {
|
|
90
|
+
const row = await this.first(`UPDATE ${this.prefix}authorization_codes SET used_at = ? WHERE code_hash = ? AND used_at IS NULL AND expires_at > ? RETURNING *`, [
|
|
91
|
+
now.getTime(),
|
|
92
|
+
codeHash,
|
|
93
|
+
now.getTime()
|
|
94
|
+
]);
|
|
95
|
+
return row ? (0, row_to_code_1.default)(row) : null;
|
|
96
|
+
}
|
|
97
|
+
async saveRefreshToken(token) {
|
|
98
|
+
await this.run(`INSERT INTO ${this.prefix}refresh_tokens (token_hash, family_id, client_id, user_id, resource, used_at, revoked_at, expires_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`, [token.tokenHash, token.familyId, token.clientId, token.userId, token.resource, (0, optional_date_1.default)(token.usedAt), (0, optional_date_1.default)(token.revokedAt), token.expiresAt.getTime()]);
|
|
99
|
+
}
|
|
100
|
+
async findRefreshToken(tokenHash) {
|
|
101
|
+
const row = await this.first(`SELECT * FROM ${this.prefix}refresh_tokens WHERE token_hash = ?`, [tokenHash]);
|
|
102
|
+
return row ? (0, row_to_refresh_token_1.default)(row) : null;
|
|
103
|
+
}
|
|
104
|
+
async claimRefreshToken(tokenHash, now) {
|
|
105
|
+
const row = await this.first(`UPDATE ${this.prefix}refresh_tokens SET used_at = ? WHERE token_hash = ? AND used_at IS NULL AND revoked_at IS NULL AND expires_at > ? RETURNING *`, [now.getTime(), tokenHash, now.getTime()]);
|
|
106
|
+
return row ? (0, row_to_refresh_token_1.default)(row) : null;
|
|
107
|
+
}
|
|
108
|
+
async revokeRefreshTokenFamily(familyId, now) {
|
|
109
|
+
await this.run(`UPDATE ${this.prefix}refresh_tokens SET revoked_at = ? WHERE family_id = ? AND revoked_at IS NULL`, [now.getTime(), familyId]);
|
|
110
|
+
}
|
|
111
|
+
async hasConsent(clientId, userId) {
|
|
112
|
+
return !!(await this.first(`SELECT 1 AS found FROM ${this.prefix}consents WHERE client_id = ? AND user_id = ?`, [clientId, userId]));
|
|
113
|
+
}
|
|
114
|
+
async upsertConsent(consent) {
|
|
115
|
+
await this.run(`INSERT INTO ${this.prefix}consents (client_id, user_id, created_at) VALUES (?, ?, ?) ON CONFLICT (client_id, user_id) DO NOTHING`, [
|
|
116
|
+
consent.clientId,
|
|
117
|
+
consent.userId,
|
|
118
|
+
Date.now()
|
|
119
|
+
]);
|
|
120
|
+
}
|
|
121
|
+
async deleteExpired(now) {
|
|
122
|
+
for (const table of ['pending_authorizations', 'authorization_codes', 'refresh_tokens']) {
|
|
123
|
+
await this.run(`DELETE FROM ${this.prefix}${table} WHERE expires_at <= ?`, [now.getTime()]);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.default = SqlStorage;
|
|
128
|
+
//# sourceMappingURL=sql.storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql.storage.js","sourceRoot":"","sources":["../../src/storage/sql.storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access.token.input.type.js","sourceRoot":"","sources":["../../src/types/access.token.input.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type AuthenticatedUserType from './authenticated.user.type';
|
|
2
|
+
import type HttpRequestType from './http.request.type';
|
|
3
|
+
type AppSessionUpstreamOptionsType = {
|
|
4
|
+
getSignedInUser: (request: HttpRequestType) => Promise<AuthenticatedUserType | null> | AuthenticatedUserType | null;
|
|
5
|
+
signInUrl: (returnTo: string) => string;
|
|
6
|
+
};
|
|
7
|
+
export default AppSessionUpstreamOptionsType;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.session.upstream.options.type.js","sourceRoot":"","sources":["../../src/types/app.session.upstream.options.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.result.type.js","sourceRoot":"","sources":["../../src/types/authenticate.result.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticated.user.type.js","sourceRoot":"","sources":["../../src/types/authenticated.user.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorization.code.record.type.js","sourceRoot":"","sources":["../../src/types/authorization.code.record.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type IMetadataCache from './i.metadata.cache';
|
|
2
|
+
type CimdOptionsType = {
|
|
3
|
+
enabled?: boolean;
|
|
4
|
+
fetch?: typeof fetch;
|
|
5
|
+
guard?: (url: URL) => Promise<void> | void;
|
|
6
|
+
cache?: IMetadataCache;
|
|
7
|
+
timeoutMs?: number;
|
|
8
|
+
maxBytes?: number;
|
|
9
|
+
maxCacheSeconds?: number;
|
|
10
|
+
defaultCacheSeconds?: number;
|
|
11
|
+
trust?: {
|
|
12
|
+
allowHosts?: string[];
|
|
13
|
+
denyHosts?: string[];
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
export default CimdOptionsType;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cimd.options.type.js","sourceRoot":"","sources":["../../src/types/cimd.options.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.metadata.type.js","sourceRoot":"","sources":["../../src/types/client.metadata.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type ClientRecordType = {
|
|
2
|
+
clientId: string;
|
|
3
|
+
clientName?: string;
|
|
4
|
+
redirectUris: string[];
|
|
5
|
+
applicationType?: string;
|
|
6
|
+
tokenEndpointAuthMethod: 'none';
|
|
7
|
+
grantTypes: string[];
|
|
8
|
+
responseTypes: string[];
|
|
9
|
+
createdAt: Date;
|
|
10
|
+
};
|
|
11
|
+
export default ClientRecordType;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.record.type.js","sourceRoot":"","sources":["../../src/types/client.record.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
type ConsentModelType = {
|
|
2
|
+
action: string;
|
|
3
|
+
state: string;
|
|
4
|
+
clientId: string;
|
|
5
|
+
clientName?: string;
|
|
6
|
+
clientHost?: string;
|
|
7
|
+
metadataDocument: boolean;
|
|
8
|
+
redirectUri: string;
|
|
9
|
+
redirectTarget: string;
|
|
10
|
+
redirectIsLocalhost: boolean;
|
|
11
|
+
userDisplayName?: string;
|
|
12
|
+
productName: string;
|
|
13
|
+
environmentLabel?: string;
|
|
14
|
+
};
|
|
15
|
+
export default ConsentModelType;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consent.model.type.js","sourceRoot":"","sources":["../../src/types/consent.model.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consent.record.type.js","sourceRoot":"","sources":["../../src/types/consent.record.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.request.type.js","sourceRoot":"","sources":["../../src/types/http.request.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.response.type.js","sourceRoot":"","sources":["../../src/types/http.response.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type ClientMetadataType from './client.metadata.type';
|
|
2
|
+
interface IMetadataCache {
|
|
3
|
+
get(url: string): Promise<ClientMetadataType | undefined>;
|
|
4
|
+
set(url: string, value: ClientMetadataType, ttlSeconds: number): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export default IMetadataCache;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i.metadata.cache.js","sourceRoot":"","sources":["../../src/types/i.metadata.cache.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type AuthorizationCodeRecordType from './authorization.code.record.type';
|
|
2
|
+
import type ClientRecordType from './client.record.type';
|
|
3
|
+
import type ConsentRecordType from './consent.record.type';
|
|
4
|
+
import type PendingAuthorizationType from './pending.authorization.type';
|
|
5
|
+
import type PendingFilterType from './pending.filter.type';
|
|
6
|
+
import type RefreshTokenRecordType from './refresh.token.record.type';
|
|
7
|
+
interface IStorage {
|
|
8
|
+
getClient(clientId: string): Promise<ClientRecordType | null>;
|
|
9
|
+
saveClient(client: ClientRecordType): Promise<void>;
|
|
10
|
+
savePendingAuthorization(pending: PendingAuthorizationType): Promise<void>;
|
|
11
|
+
getPendingAuthorization(stateId: string, now: Date): Promise<PendingAuthorizationType | null>;
|
|
12
|
+
attachUserToPendingAuthorization(stateId: string, userId: string, now: Date, displayName?: string): Promise<PendingAuthorizationType | null>;
|
|
13
|
+
takePendingAuthorization(stateId: string, filter: PendingFilterType): Promise<PendingAuthorizationType | null>;
|
|
14
|
+
deletePendingAuthorization(stateId: string): Promise<void>;
|
|
15
|
+
saveAuthorizationCode(code: AuthorizationCodeRecordType): Promise<void>;
|
|
16
|
+
claimAuthorizationCode(codeHash: string, now: Date): Promise<AuthorizationCodeRecordType | null>;
|
|
17
|
+
saveRefreshToken(token: RefreshTokenRecordType): Promise<void>;
|
|
18
|
+
findRefreshToken(tokenHash: string): Promise<RefreshTokenRecordType | null>;
|
|
19
|
+
claimRefreshToken(tokenHash: string, now: Date): Promise<RefreshTokenRecordType | null>;
|
|
20
|
+
revokeRefreshTokenFamily(familyId: string, now: Date): Promise<void>;
|
|
21
|
+
hasConsent(clientId: string, userId: string): Promise<boolean>;
|
|
22
|
+
upsertConsent(consent: ConsentRecordType): Promise<void>;
|
|
23
|
+
deleteExpired(now: Date): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export default IStorage;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i.storage.js","sourceRoot":"","sources":["../../src/types/i.storage.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type AuthenticatedUserType from './authenticated.user.type';
|
|
2
|
+
import type HttpRequestType from './http.request.type';
|
|
3
|
+
import type UpstreamBeginType from './upstream.begin.type';
|
|
4
|
+
import type UpstreamContextType from './upstream.context.type';
|
|
5
|
+
interface IUpstream {
|
|
6
|
+
begin(context: UpstreamContextType): Promise<UpstreamBeginType>;
|
|
7
|
+
callback?(context: UpstreamContextType): Promise<Record<string, unknown> | null>;
|
|
8
|
+
resume?(context: UpstreamContextType): Promise<AuthenticatedUserType | null>;
|
|
9
|
+
verifyUser?(request: HttpRequestType, userId: string): Promise<boolean>;
|
|
10
|
+
}
|
|
11
|
+
export default IUpstream;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i.upstream.js","sourceRoot":"","sources":["../../src/types/i.upstream.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key.pair.type.js","sourceRoot":"","sources":["../../src/types/key.pair.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.type.js","sourceRoot":"","sources":["../../src/types/logger.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type KeyPairType from './key.pair.type';
|
|
2
|
+
import type McpAuthOptionsType from './mcp.auth.options.type';
|
|
3
|
+
import type RedirectPolicyType from './redirect.policy.type';
|
|
4
|
+
import type ConsentModelType from './consent.model.type';
|
|
5
|
+
import type ResolvedClientType from './resolved.client.type';
|
|
6
|
+
type McpAuthContextType<TUser = unknown> = {
|
|
7
|
+
options: McpAuthOptionsType<TUser>;
|
|
8
|
+
issuer: string;
|
|
9
|
+
basePath: string;
|
|
10
|
+
callbackPath: string;
|
|
11
|
+
productName: string;
|
|
12
|
+
redirectPolicy: RedirectPolicyType;
|
|
13
|
+
ttl: {
|
|
14
|
+
accessToken: number;
|
|
15
|
+
refreshToken: number;
|
|
16
|
+
pending: number;
|
|
17
|
+
code: number;
|
|
18
|
+
};
|
|
19
|
+
now: () => Date;
|
|
20
|
+
registrationEnabled: boolean;
|
|
21
|
+
cimdEnabled: boolean;
|
|
22
|
+
renderConsent: (model: ConsentModelType) => string;
|
|
23
|
+
resourceMetadataUrl: string;
|
|
24
|
+
getKeys: () => Promise<KeyPairType>;
|
|
25
|
+
resolveClient: (clientId: string) => Promise<ResolvedClientType | {
|
|
26
|
+
error: string;
|
|
27
|
+
}>;
|
|
28
|
+
};
|
|
29
|
+
export default McpAuthContextType;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.auth.context.type.js","sourceRoot":"","sources":["../../src/types/mcp.auth.context.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type AuthenticatedUserType from './authenticated.user.type';
|
|
2
|
+
import type CimdOptionsType from './cimd.options.type';
|
|
3
|
+
import type ConsentModelType from './consent.model.type';
|
|
4
|
+
import type IStorage from './i.storage';
|
|
5
|
+
import type IUpstream from './i.upstream';
|
|
6
|
+
import type LoggerType from './logger.type';
|
|
7
|
+
import type RouteNameType from './route.name.type';
|
|
8
|
+
type McpAuthOptionsType<TUser = unknown> = {
|
|
9
|
+
issuer: string;
|
|
10
|
+
resource: string;
|
|
11
|
+
signingKey: CryptoKey | string;
|
|
12
|
+
verificationKey?: CryptoKey;
|
|
13
|
+
storage: IStorage;
|
|
14
|
+
upstream: IUpstream;
|
|
15
|
+
resolveUser?: (claims: Record<string, unknown>) => Promise<AuthenticatedUserType> | AuthenticatedUserType;
|
|
16
|
+
loadActiveUser: (id: string) => Promise<TUser | null> | TUser | null;
|
|
17
|
+
renderConsent?: (model: ConsentModelType) => string;
|
|
18
|
+
rateLimit?: (key: string, route: RouteNameType) => Promise<boolean> | boolean;
|
|
19
|
+
logger?: LoggerType;
|
|
20
|
+
callbackPath?: string;
|
|
21
|
+
productName?: string;
|
|
22
|
+
environmentLabel?: string;
|
|
23
|
+
registration?: {
|
|
24
|
+
enabled?: boolean;
|
|
25
|
+
};
|
|
26
|
+
cimd?: CimdOptionsType;
|
|
27
|
+
redirects?: {
|
|
28
|
+
httpsHosts?: string[];
|
|
29
|
+
customSchemes?: string[];
|
|
30
|
+
};
|
|
31
|
+
ttl?: {
|
|
32
|
+
accessToken?: number;
|
|
33
|
+
refreshToken?: number;
|
|
34
|
+
pending?: number;
|
|
35
|
+
code?: number;
|
|
36
|
+
};
|
|
37
|
+
now?: () => Date;
|
|
38
|
+
};
|
|
39
|
+
export default McpAuthOptionsType;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.auth.options.type.js","sourceRoot":"","sources":["../../src/types/mcp.auth.options.type.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC"}
|