@authup/server-core 1.0.0-beta.62 → 1.0.0-beta.64
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/dist/adapters/database/data-source/options/module.d.ts +1 -0
- package/dist/adapters/database/data-source/options/module.d.ts.map +1 -1
- package/dist/adapters/database/data-source/options/module.mjs +33 -4
- package/dist/adapters/database/data-source/options/module.mjs.map +1 -1
- package/dist/adapters/database/domains/client/entity.d.ts +1 -2
- package/dist/adapters/database/domains/client/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/client/entity.mjs +7 -14
- package/dist/adapters/database/domains/client/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/identity-provider-attribute/subscriber.d.ts +9 -1
- package/dist/adapters/database/domains/identity-provider-attribute/subscriber.d.ts.map +1 -1
- package/dist/adapters/database/domains/identity-provider-attribute/subscriber.mjs +14 -0
- package/dist/adapters/database/domains/identity-provider-attribute/subscriber.mjs.map +1 -1
- package/dist/adapters/database/domains/session/entity.d.ts +8 -0
- package/dist/adapters/database/domains/session/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/session/entity.mjs +19 -0
- package/dist/adapters/database/domains/session/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/user/entity.d.ts +1 -0
- package/dist/adapters/database/domains/user/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/user/entity.mjs +6 -0
- package/dist/adapters/database/domains/user/entity.mjs.map +1 -1
- package/dist/adapters/database/extra-attribute-repository/repository.mjs +1 -1
- package/dist/adapters/database/extra-attribute-repository/repository.mjs.map +1 -1
- package/dist/adapters/database/extra-attribute-repository/tree/adapter.mjs +4 -2
- package/dist/adapters/database/extra-attribute-repository/tree/adapter.mjs.map +1 -1
- package/dist/adapters/database/extra-attribute-repository/tree/repository.mjs +1 -1
- package/dist/adapters/database/extra-attribute-repository/tree/repository.mjs.map +1 -1
- package/dist/adapters/database/index.mjs +3 -3
- package/dist/adapters/database/migrations/mysql/1787571998009-SessionUserAndClientColumns.d.ts +56 -0
- package/dist/adapters/database/migrations/mysql/1787571998009-SessionUserAndClientColumns.d.ts.map +1 -0
- package/dist/adapters/database/migrations/mysql/1787571998009-SessionUserAndClientColumns.mjs +105 -0
- package/dist/adapters/database/migrations/mysql/1787571998009-SessionUserAndClientColumns.mjs.map +1 -0
- package/dist/adapters/database/migrations/postgres/1787571998009-SessionUserAndClientColumns.d.ts +56 -0
- package/dist/adapters/database/migrations/postgres/1787571998009-SessionUserAndClientColumns.d.ts.map +1 -0
- package/dist/adapters/database/migrations/postgres/1787571998009-SessionUserAndClientColumns.mjs +104 -0
- package/dist/adapters/database/migrations/postgres/1787571998009-SessionUserAndClientColumns.mjs.map +1 -0
- package/dist/adapters/database/subscriber/module.d.ts +6 -2
- package/dist/adapters/database/subscriber/module.d.ts.map +1 -1
- package/dist/adapters/database/subscriber/module.mjs +9 -5
- package/dist/adapters/database/subscriber/module.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/authorization/module.mjs +1 -1
- package/dist/adapters/http/adapters/oauth2/authorization/module.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs +8 -2
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
- package/dist/adapters/http/constants.d.ts +18 -0
- package/dist/adapters/http/constants.d.ts.map +1 -0
- package/dist/adapters/http/constants.mjs +23 -0
- package/dist/adapters/http/constants.mjs.map +1 -0
- package/dist/adapters/http/controllers/entities/client/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts +23 -1
- package/dist/adapters/http/controllers/entities/identity-provider/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs +86 -47
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/identity-provider/types.d.ts +6 -0
- package/dist/adapters/http/controllers/entities/identity-provider/types.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/realm/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/realm/module.mjs +2 -0
- package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/session/module.d.ts +33 -1
- package/dist/adapters/http/controllers/entities/session/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/session/module.mjs +74 -0
- package/dist/adapters/http/controllers/entities/session/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/index.mjs +3 -1
- package/dist/adapters/http/controllers/workflows/account/index.d.ts +1 -0
- package/dist/adapters/http/controllers/workflows/account/index.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/account/module.d.ts +25 -16
- package/dist/adapters/http/controllers/workflows/account/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/account/module.mjs +40 -17
- package/dist/adapters/http/controllers/workflows/account/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/account/types.d.ts +33 -0
- package/dist/adapters/http/controllers/workflows/account/types.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/activate/module.d.ts +8 -4
- package/dist/adapters/http/controllers/workflows/activate/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/activate/module.mjs +7 -9
- package/dist/adapters/http/controllers/workflows/activate/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/admin/index.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/admin/index.mjs +5 -0
- package/dist/adapters/http/controllers/workflows/admin/module.d.ts +30 -0
- package/dist/adapters/http/controllers/workflows/admin/module.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/admin/module.mjs +88 -0
- package/dist/adapters/http/controllers/workflows/admin/module.mjs.map +1 -0
- package/dist/adapters/http/controllers/workflows/admin/types.d.ts +14 -0
- package/dist/adapters/http/controllers/workflows/admin/types.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/auth-console.d.ts +16 -0
- package/dist/adapters/http/controllers/workflows/auth-console.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/auth-console.mjs +32 -0
- package/dist/adapters/http/controllers/workflows/auth-console.mjs.map +1 -0
- package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.d.ts +2 -0
- package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.mjs +21 -3
- package/dist/adapters/http/controllers/workflows/authenticator-challenge/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/authorize/module.d.ts +16 -1
- package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/authorize/module.mjs +44 -21
- package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/authorize/types.d.ts +5 -0
- package/dist/adapters/http/controllers/workflows/authorize/types.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/console-login/index.d.ts +3 -0
- package/dist/adapters/http/controllers/workflows/console-login/index.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/console-login/index.mjs +5 -0
- package/dist/adapters/http/controllers/workflows/console-login/module.d.ts +83 -0
- package/dist/adapters/http/controllers/workflows/console-login/module.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/console-login/module.mjs +230 -0
- package/dist/adapters/http/controllers/workflows/console-login/module.mjs.map +1 -0
- package/dist/adapters/http/controllers/workflows/console-login/types.d.ts +58 -0
- package/dist/adapters/http/controllers/workflows/console-login/types.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/index.d.ts +2 -0
- package/dist/adapters/http/controllers/workflows/index.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/index.mjs +5 -1
- package/dist/adapters/http/controllers/workflows/logout/module.d.ts +32 -3
- package/dist/adapters/http/controllers/workflows/logout/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/logout/module.mjs +48 -24
- package/dist/adapters/http/controllers/workflows/logout/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/logout/types.d.ts +1 -1
- package/dist/adapters/http/controllers/workflows/logout/types.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts +8 -4
- package/dist/adapters/http/controllers/workflows/password-forgot/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs +7 -9
- package/dist/adapters/http/controllers/workflows/password-forgot/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts +8 -4
- package/dist/adapters/http/controllers/workflows/password-reset/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/password-reset/module.mjs +7 -10
- package/dist/adapters/http/controllers/workflows/password-reset/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/register/module.d.ts +8 -4
- package/dist/adapters/http/controllers/workflows/register/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/register/module.mjs +7 -9
- package/dist/adapters/http/controllers/workflows/register/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/status/module.mjs +1 -1
- package/dist/adapters/http/controllers/workflows/token/module.d.ts +45 -2
- package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/token/module.mjs +117 -26
- package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
- package/dist/adapters/http/cookie/index.d.ts +2 -0
- package/dist/adapters/http/cookie/index.d.ts.map +1 -0
- package/dist/adapters/http/cookie/index.mjs +5 -0
- package/dist/adapters/http/cookie/session.d.ts +35 -0
- package/dist/adapters/http/cookie/session.d.ts.map +1 -0
- package/dist/adapters/http/cookie/session.mjs +62 -0
- package/dist/adapters/http/cookie/session.mjs.map +1 -0
- package/dist/adapters/http/index.d.ts +2 -0
- package/dist/adapters/http/index.d.ts.map +1 -1
- package/dist/adapters/http/index.mjs +20 -16
- package/dist/adapters/http/internal-client/index.d.ts +3 -0
- package/dist/adapters/http/internal-client/index.d.ts.map +1 -0
- package/dist/adapters/http/internal-client/index.mjs +5 -0
- package/dist/adapters/http/internal-client/module.d.ts +21 -0
- package/dist/adapters/http/internal-client/module.d.ts.map +1 -0
- package/dist/adapters/http/{ui/auth-console/http-client.mjs → internal-client/module.mjs} +16 -15
- package/dist/adapters/http/internal-client/module.mjs.map +1 -0
- package/dist/adapters/http/internal-client/types.d.ts +13 -0
- package/dist/adapters/http/internal-client/types.d.ts.map +1 -0
- package/dist/adapters/http/middleware/built-in/authorization/index.d.ts +1 -0
- package/dist/adapters/http/middleware/built-in/authorization/index.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/authorization/index.mjs +2 -1
- package/dist/adapters/http/middleware/built-in/authorization/issuance.d.ts +45 -0
- package/dist/adapters/http/middleware/built-in/authorization/issuance.d.ts.map +1 -0
- package/dist/adapters/http/middleware/built-in/authorization/issuance.mjs +61 -0
- package/dist/adapters/http/middleware/built-in/authorization/issuance.mjs.map +1 -0
- package/dist/adapters/http/middleware/built-in/authorization/module.d.ts +26 -2
- package/dist/adapters/http/middleware/built-in/authorization/module.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/authorization/module.mjs +67 -1
- package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/authorization/types.d.ts +21 -1
- package/dist/adapters/http/middleware/built-in/authorization/types.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/basic.d.ts +2 -2
- package/dist/adapters/http/middleware/built-in/basic.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/basic.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/cors.d.ts +8 -2
- package/dist/adapters/http/middleware/built-in/cors.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/cors.mjs +20 -3
- package/dist/adapters/http/middleware/built-in/cors.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/error.d.ts +2 -2
- package/dist/adapters/http/middleware/built-in/error.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/error.mjs +10 -1
- package/dist/adapters/http/middleware/built-in/error.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/index.d.ts +1 -4
- package/dist/adapters/http/middleware/built-in/index.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/index.mjs +3 -4
- package/dist/adapters/http/middleware/built-in/internal-http-client.d.ts +17 -0
- package/dist/adapters/http/middleware/built-in/internal-http-client.d.ts.map +1 -0
- package/dist/adapters/http/middleware/built-in/internal-http-client.mjs +27 -0
- package/dist/adapters/http/middleware/built-in/internal-http-client.mjs.map +1 -0
- package/dist/adapters/http/middleware/built-in/logger.mjs +1 -1
- package/dist/adapters/http/middleware/built-in/logger.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/prometheus.d.ts +6 -5
- package/dist/adapters/http/middleware/built-in/prometheus.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/prometheus.mjs +3 -2
- package/dist/adapters/http/middleware/built-in/prometheus.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/rate-limit.d.ts +2 -2
- package/dist/adapters/http/middleware/built-in/rate-limit.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/rate-limit.mjs +15 -0
- package/dist/adapters/http/middleware/built-in/rate-limit.mjs.map +1 -1
- package/dist/adapters/http/middleware/index.mjs +3 -4
- package/dist/adapters/http/request/constants.d.ts +1 -1
- package/dist/adapters/http/request/constants.d.ts.map +1 -1
- package/dist/adapters/http/request/constants.mjs +1 -5
- package/dist/adapters/http/request/constants.mjs.map +1 -1
- package/dist/adapters/http/request/helpers/index.d.ts +1 -1
- package/dist/adapters/http/request/helpers/index.d.ts.map +1 -1
- package/dist/adapters/http/request/helpers/index.mjs +2 -2
- package/dist/adapters/http/request/helpers/locale.d.ts +2 -1
- package/dist/adapters/http/request/helpers/locale.d.ts.map +1 -1
- package/dist/adapters/http/request/helpers/locale.mjs +1 -1
- package/dist/adapters/http/request/helpers/locale.mjs.map +1 -1
- package/dist/adapters/http/request/helpers/same-origin.d.ts +38 -0
- package/dist/adapters/http/request/helpers/same-origin.d.ts.map +1 -0
- package/dist/adapters/http/request/helpers/same-origin.mjs +68 -0
- package/dist/adapters/http/request/helpers/same-origin.mjs.map +1 -0
- package/dist/adapters/http/request/index.mjs +2 -2
- package/dist/adapters/http/request/permission/module.mjs +1 -1
- package/dist/adapters/http/request/permission/module.mjs.map +1 -1
- package/dist/adapters/http/request/types.d.ts +1 -2
- package/dist/adapters/http/request/types.d.ts.map +1 -1
- package/dist/adapters/shared/ldap/module.d.ts.map +1 -1
- package/dist/adapters/shared/ldap/module.mjs +4 -1
- package/dist/adapters/shared/ldap/module.mjs.map +1 -1
- package/dist/app/builder.d.ts +4 -4
- package/dist/app/builder.d.ts.map +1 -1
- package/dist/app/builder.mjs +7 -4
- package/dist/app/builder.mjs.map +1 -1
- package/dist/app/factory.d.ts +10 -0
- package/dist/app/factory.d.ts.map +1 -1
- package/dist/app/factory.mjs +26 -2
- package/dist/app/factory.mjs.map +1 -1
- package/dist/app/index.mjs +17 -19
- package/dist/app/modules/authentication/module.d.ts.map +1 -1
- package/dist/app/modules/authentication/module.mjs +15 -2
- package/dist/app/modules/authentication/module.mjs.map +1 -1
- package/dist/app/modules/authentication/repositories/session.d.ts +4 -1
- package/dist/app/modules/authentication/repositories/session.d.ts.map +1 -1
- package/dist/app/modules/authentication/repositories/session.mjs +20 -3
- package/dist/app/modules/authentication/repositories/session.mjs.map +1 -1
- package/dist/app/modules/components/index.d.ts +1 -0
- package/dist/app/modules/components/index.d.ts.map +1 -1
- package/dist/app/modules/components/module.d.ts +3 -1
- package/dist/app/modules/components/module.d.ts.map +1 -1
- package/dist/app/modules/components/module.mjs +26 -7
- package/dist/app/modules/components/module.mjs.map +1 -1
- package/dist/app/modules/components/types.d.ts +11 -0
- package/dist/app/modules/components/types.d.ts.map +1 -0
- package/dist/app/modules/config/app-origins.d.ts +10 -0
- package/dist/app/modules/config/app-origins.d.ts.map +1 -0
- package/dist/app/modules/config/app-origins.mjs +21 -0
- package/dist/app/modules/config/app-origins.mjs.map +1 -0
- package/dist/app/modules/config/constants.d.ts +23 -50
- package/dist/app/modules/config/constants.d.ts.map +1 -1
- package/dist/app/modules/config/constants.mjs +34 -51
- package/dist/app/modules/config/constants.mjs.map +1 -1
- package/dist/app/modules/config/index.d.ts +2 -3
- package/dist/app/modules/config/index.d.ts.map +1 -1
- package/dist/app/modules/config/index.mjs +4 -8
- package/dist/app/modules/config/module.d.ts +2 -2
- package/dist/app/modules/config/module.d.ts.map +1 -1
- package/dist/app/modules/config/module.mjs +1 -1
- package/dist/app/modules/config/module.mjs.map +1 -1
- package/dist/app/modules/config/read.d.ts +29 -0
- package/dist/app/modules/config/read.d.ts.map +1 -0
- package/dist/app/modules/config/read.mjs +65 -0
- package/dist/app/modules/config/read.mjs.map +1 -0
- package/dist/app/modules/config/types.d.ts +30 -397
- package/dist/app/modules/config/types.d.ts.map +1 -1
- package/dist/app/modules/config/validator.d.ts.map +1 -1
- package/dist/app/modules/config/validator.mjs +3 -87
- package/dist/app/modules/config/validator.mjs.map +1 -1
- package/dist/app/modules/database/index.d.ts +1 -0
- package/dist/app/modules/database/index.d.ts.map +1 -1
- package/dist/app/modules/database/index.mjs +2 -1
- package/dist/app/modules/database/migration.d.ts +33 -0
- package/dist/app/modules/database/migration.d.ts.map +1 -0
- package/dist/app/modules/database/migration.mjs +52 -0
- package/dist/app/modules/database/migration.mjs.map +1 -0
- package/dist/app/modules/database/module.d.ts.map +1 -1
- package/dist/app/modules/database/module.mjs +12 -6
- package/dist/app/modules/database/module.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client/repository.d.ts +6 -1
- package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/client/repository.mjs +21 -4
- package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/event/repository.d.ts +29 -2
- package/dist/app/modules/database/repositories/event/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/event/repository.mjs +42 -24
- package/dist/app/modules/database/repositories/event/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/helpers.d.ts +24 -1
- package/dist/app/modules/database/repositories/helpers.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/helpers.mjs +38 -1
- package/dist/app/modules/database/repositories/helpers.mjs.map +1 -1
- package/dist/app/modules/database/repositories/identity-provider/repository.d.ts +3 -1
- package/dist/app/modules/database/repositories/identity-provider/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/identity-provider/repository.mjs +3 -3
- package/dist/app/modules/database/repositories/identity-provider/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/identity-provider-account/repository.mjs +4 -2
- package/dist/app/modules/database/repositories/identity-provider-account/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/key/repository.mjs +1 -1
- package/dist/app/modules/database/repositories/permission/repository.mjs +1 -1
- package/dist/app/modules/database/repositories/policy/repository.mjs +1 -1
- package/dist/app/modules/database/repositories/role/repository.mjs +1 -1
- package/dist/app/modules/database/repositories/scope/repository.mjs +1 -1
- package/dist/app/modules/database/repositories/trust-anchor/repository.mjs +1 -1
- package/dist/app/modules/database/repositories/user/repository.d.ts +7 -2
- package/dist/app/modules/database/repositories/user/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/user/repository.mjs +21 -4
- package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
- package/dist/app/modules/http/constants.d.ts +3 -1
- package/dist/app/modules/http/constants.d.ts.map +1 -1
- package/dist/app/modules/http/constants.mjs +3 -2
- package/dist/app/modules/http/constants.mjs.map +1 -1
- package/dist/app/modules/http/module.d.ts +30 -9
- package/dist/app/modules/http/module.d.ts.map +1 -1
- package/dist/app/modules/http/module.mjs +31 -33
- package/dist/app/modules/http/module.mjs.map +1 -1
- package/dist/app/modules/http/modules/controller.d.ts +4 -3
- package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
- package/dist/app/modules/http/modules/controller.mjs +70 -38
- package/dist/app/modules/http/modules/controller.mjs.map +1 -1
- package/dist/app/modules/http/modules/middleware.d.ts +13 -22
- package/dist/app/modules/http/modules/middleware.d.ts.map +1 -1
- package/dist/app/modules/http/modules/middleware.mjs +20 -36
- package/dist/app/modules/http/modules/middleware.mjs.map +1 -1
- package/dist/app/modules/identity/module.mjs +4 -4
- package/dist/app/modules/identity/repositories/client.mjs +4 -2
- package/dist/app/modules/identity/repositories/client.mjs.map +1 -1
- package/dist/app/modules/identity/repositories/user.mjs +4 -2
- package/dist/app/modules/identity/repositories/user.mjs.map +1 -1
- package/dist/app/modules/index.mjs +21 -23
- package/dist/app/modules/logger/module.mjs +1 -1
- package/dist/app/modules/logger/module.mjs.map +1 -1
- package/dist/app/modules/mail/module.d.ts.map +1 -1
- package/dist/app/modules/mail/module.mjs.map +1 -1
- package/dist/app/modules/oauth2/constants.d.ts +3 -1
- package/dist/app/modules/oauth2/constants.d.ts.map +1 -1
- package/dist/app/modules/oauth2/constants.mjs +2 -0
- package/dist/app/modules/oauth2/constants.mjs.map +1 -1
- package/dist/app/modules/oauth2/module.d.ts.map +1 -1
- package/dist/app/modules/oauth2/module.mjs +14 -4
- package/dist/app/modules/oauth2/module.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/client/repository.mjs +4 -2
- package/dist/app/modules/oauth2/repositories/client/repository.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/consent/repository.d.ts.map +1 -1
- package/dist/app/modules/oauth2/repositories/consent/repository.mjs +3 -2
- package/dist/app/modules/oauth2/repositories/consent/repository.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/console-login/index.d.ts +2 -0
- package/dist/app/modules/oauth2/repositories/console-login/index.d.ts.map +1 -0
- package/dist/app/modules/oauth2/repositories/console-login/index.mjs +5 -0
- package/dist/app/modules/oauth2/repositories/console-login/store.d.ts +19 -0
- package/dist/app/modules/oauth2/repositories/console-login/store.d.ts.map +1 -0
- package/dist/app/modules/oauth2/repositories/console-login/store.mjs +47 -0
- package/dist/app/modules/oauth2/repositories/console-login/store.mjs.map +1 -0
- package/dist/app/modules/oauth2/repositories/constants.d.ts +2 -0
- package/dist/app/modules/oauth2/repositories/constants.d.ts.map +1 -1
- package/dist/app/modules/oauth2/repositories/constants.mjs +2 -0
- package/dist/app/modules/oauth2/repositories/constants.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/federated-login/index.d.ts +2 -0
- package/dist/app/modules/oauth2/repositories/federated-login/index.d.ts.map +1 -0
- package/dist/app/modules/oauth2/repositories/federated-login/index.mjs +5 -0
- package/dist/app/modules/oauth2/repositories/federated-login/store.d.ts +9 -0
- package/dist/app/modules/oauth2/repositories/federated-login/store.d.ts.map +1 -0
- package/dist/app/modules/oauth2/repositories/federated-login/store.mjs +33 -0
- package/dist/app/modules/oauth2/repositories/federated-login/store.mjs.map +1 -0
- package/dist/app/modules/oauth2/repositories/index.d.ts +2 -0
- package/dist/app/modules/oauth2/repositories/index.d.ts.map +1 -1
- package/dist/app/modules/oauth2/repositories/index.mjs +5 -1
- package/dist/app/modules/oauth2/repositories/session-token/repository.d.ts +2 -2
- package/dist/app/modules/oauth2/repositories/session-token/repository.d.ts.map +1 -1
- package/dist/app/modules/oauth2/repositories/session-token/repository.mjs +5 -3
- package/dist/app/modules/oauth2/repositories/session-token/repository.mjs.map +1 -1
- package/dist/app/modules/provisioning/module.d.ts.map +1 -1
- package/dist/app/modules/provisioning/module.mjs +5 -6
- package/dist/app/modules/provisioning/module.mjs.map +1 -1
- package/dist/app/modules/provisioning/sources/composite/module.d.ts.map +1 -1
- package/dist/app/modules/provisioning/sources/composite/module.mjs +2 -1
- package/dist/app/modules/provisioning/sources/composite/module.mjs.map +1 -1
- package/dist/app/modules/provisioning/sources/default/module.d.ts.map +1 -1
- package/dist/app/modules/provisioning/sources/default/module.mjs +2 -1
- package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
- package/dist/app/modules/runtime/module.d.ts.map +1 -1
- package/dist/app/modules/runtime/module.mjs +2 -1
- package/dist/app/modules/runtime/module.mjs.map +1 -1
- package/dist/app/types.d.ts +16 -0
- package/dist/app/types.d.ts.map +1 -1
- package/dist/cli/commands/config.d.ts +40 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.mjs +65 -0
- package/dist/cli/commands/config.mjs.map +1 -0
- package/dist/cli/commands/healthcheck.d.ts +3 -2
- package/dist/cli/commands/healthcheck.d.ts.map +1 -1
- package/dist/cli/commands/healthcheck.mjs +6 -3
- package/dist/cli/commands/healthcheck.mjs.map +1 -1
- package/dist/cli/commands/index.d.ts +3 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.mjs +3 -1
- package/dist/cli/commands/migration.d.ts +3 -10
- package/dist/cli/commands/migration.d.ts.map +1 -1
- package/dist/cli/commands/migration.mjs +17 -9
- package/dist/cli/commands/migration.mjs.map +1 -1
- package/dist/cli/commands/shutdown.d.ts +16 -0
- package/dist/cli/commands/shutdown.d.ts.map +1 -0
- package/dist/cli/commands/shutdown.mjs +41 -0
- package/dist/cli/commands/shutdown.mjs.map +1 -0
- package/dist/cli/commands/start.d.ts +3 -2
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.mjs +3 -21
- package/dist/cli/commands/start.mjs.map +1 -1
- package/dist/cli/commands/types.d.ts.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.mjs.map +1 -1
- package/dist/cli/module.d.ts +0 -2
- package/dist/cli/module.d.ts.map +1 -1
- package/dist/cli/module.mjs +4 -3
- package/dist/cli/module.mjs.map +1 -1
- package/dist/components/oauth2-cleaner/module.d.ts +2 -2
- package/dist/components/oauth2-cleaner/module.d.ts.map +1 -1
- package/dist/components/oauth2-cleaner/module.mjs +10 -7
- package/dist/components/oauth2-cleaner/module.mjs.map +1 -1
- package/dist/core/authentication/index.mjs +2 -1
- package/dist/core/authentication/session/constants.d.ts +10 -0
- package/dist/core/authentication/session/constants.d.ts.map +1 -0
- package/dist/core/authentication/session/constants.mjs +16 -0
- package/dist/core/authentication/session/constants.mjs.map +1 -0
- package/dist/core/authentication/session/index.d.ts +1 -0
- package/dist/core/authentication/session/index.d.ts.map +1 -1
- package/dist/core/authentication/session/index.mjs +2 -1
- package/dist/core/authentication/session/module.d.ts +2 -1
- package/dist/core/authentication/session/module.d.ts.map +1 -1
- package/dist/core/authentication/session/module.mjs +7 -1
- package/dist/core/authentication/session/module.mjs.map +1 -1
- package/dist/core/authentication/session/types.d.ts +70 -1
- package/dist/core/authentication/session/types.d.ts.map +1 -1
- package/dist/core/authentication/session/types.mjs.map +1 -1
- package/dist/core/entities/client/schema.d.ts.map +1 -1
- package/dist/core/entities/client/schema.mjs +1 -2
- package/dist/core/entities/client/schema.mjs.map +1 -1
- package/dist/core/entities/client/service.d.ts.map +1 -1
- package/dist/core/entities/client/service.mjs +15 -1
- package/dist/core/entities/client/service.mjs.map +1 -1
- package/dist/core/entities/client/system-clients.d.ts +0 -5
- package/dist/core/entities/client/system-clients.d.ts.map +1 -1
- package/dist/core/entities/client/system-clients.mjs +0 -6
- package/dist/core/entities/client/system-clients.mjs.map +1 -1
- package/dist/core/entities/client/types.d.ts +12 -0
- package/dist/core/entities/client/types.d.ts.map +1 -1
- package/dist/core/entities/client-permission/service.mjs +1 -1
- package/dist/core/entities/client-permission/service.mjs.map +1 -1
- package/dist/core/entities/event/constants.d.ts +1 -6
- package/dist/core/entities/event/constants.d.ts.map +1 -1
- package/dist/core/entities/event/constants.mjs +1 -5
- package/dist/core/entities/event/constants.mjs.map +1 -1
- package/dist/core/entities/event/entity-event-handler.d.ts.map +1 -1
- package/dist/core/entities/event/entity-event-handler.mjs +17 -3
- package/dist/core/entities/event/entity-event-handler.mjs.map +1 -1
- package/dist/core/entities/event/service.d.ts.map +1 -1
- package/dist/core/entities/event/service.mjs +3 -3
- package/dist/core/entities/event/service.mjs.map +1 -1
- package/dist/core/entities/event/types.d.ts +15 -1
- package/dist/core/entities/event/types.d.ts.map +1 -1
- package/dist/core/entities/identity-provider/types.d.ts +9 -1
- package/dist/core/entities/identity-provider/types.d.ts.map +1 -1
- package/dist/core/entities/permission/service.mjs +1 -2
- package/dist/core/entities/permission/service.mjs.map +1 -1
- package/dist/core/entities/role-permission/service.mjs +1 -1
- package/dist/core/entities/role-permission/service.mjs.map +1 -1
- package/dist/core/entities/session/service.d.ts +13 -1
- package/dist/core/entities/session/service.d.ts.map +1 -1
- package/dist/core/entities/session/service.mjs +19 -16
- package/dist/core/entities/session/service.mjs.map +1 -1
- package/dist/core/entities/user/schema.d.ts.map +1 -1
- package/dist/core/entities/user/schema.mjs +1 -0
- package/dist/core/entities/user/schema.mjs.map +1 -1
- package/dist/core/entities/user/service.d.ts.map +1 -1
- package/dist/core/entities/user/service.mjs +21 -1
- package/dist/core/entities/user/service.mjs.map +1 -1
- package/dist/core/entities/user/types.d.ts +12 -0
- package/dist/core/entities/user/types.d.ts.map +1 -1
- package/dist/core/entities/user-permission/service.mjs +1 -1
- package/dist/core/entities/user-permission/service.mjs.map +1 -1
- package/dist/core/identity/index.mjs +2 -1
- package/dist/core/identity/permission/junction-grant.mjs +1 -1
- package/dist/core/identity/permission/junction-grant.mjs.map +1 -1
- package/dist/core/identity/provider/account/module.mjs +2 -2
- package/dist/core/identity/provider/account/module.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/index.mjs +2 -1
- package/dist/core/identity/provider/authentication/protocols/index.mjs +2 -1
- package/dist/core/identity/provider/authentication/protocols/oauth2/assurance.d.ts +46 -0
- package/dist/core/identity/provider/authentication/protocols/oauth2/assurance.d.ts.map +1 -0
- package/dist/core/identity/provider/authentication/protocols/oauth2/assurance.mjs +89 -0
- package/dist/core/identity/provider/authentication/protocols/oauth2/assurance.mjs.map +1 -0
- package/dist/core/identity/provider/authentication/protocols/oauth2/index.d.ts +1 -0
- package/dist/core/identity/provider/authentication/protocols/oauth2/index.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/oauth2/index.mjs +2 -1
- package/dist/core/identity/provider/authentication/protocols/oauth2/module.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs +9 -2
- package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs.map +1 -1
- package/dist/core/identity/provider/index.mjs +2 -1
- package/dist/core/identity/registration/service.d.ts.map +1 -1
- package/dist/core/identity/registration/service.mjs +2 -1
- package/dist/core/identity/registration/service.mjs.map +1 -1
- package/dist/core/index.mjs +14 -4
- package/dist/core/oauth2/authorization/helpers.d.ts +14 -0
- package/dist/core/oauth2/authorization/helpers.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/helpers.mjs +15 -2
- package/dist/core/oauth2/authorization/helpers.mjs.map +1 -1
- package/dist/core/oauth2/authorization/index.mjs +2 -2
- package/dist/core/oauth2/authorization/module.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/module.mjs +6 -4
- package/dist/core/oauth2/authorization/module.mjs.map +1 -1
- package/dist/core/oauth2/authorization/state/types.d.ts +8 -0
- package/dist/core/oauth2/authorization/state/types.d.ts.map +1 -1
- package/dist/core/oauth2/backchannel-logout/constants.d.ts +16 -0
- package/dist/core/oauth2/backchannel-logout/constants.d.ts.map +1 -0
- package/dist/core/oauth2/backchannel-logout/constants.mjs +20 -0
- package/dist/core/oauth2/backchannel-logout/constants.mjs.map +1 -0
- package/dist/core/oauth2/backchannel-logout/index.d.ts +4 -0
- package/dist/core/oauth2/backchannel-logout/index.d.ts.map +1 -0
- package/dist/core/oauth2/backchannel-logout/index.mjs +6 -0
- package/dist/core/oauth2/backchannel-logout/module.d.ts +26 -0
- package/dist/core/oauth2/backchannel-logout/module.d.ts.map +1 -0
- package/dist/core/oauth2/backchannel-logout/module.mjs +78 -0
- package/dist/core/oauth2/backchannel-logout/module.mjs.map +1 -0
- package/dist/core/oauth2/backchannel-logout/types.d.ts +29 -0
- package/dist/core/oauth2/backchannel-logout/types.d.ts.map +1 -0
- package/dist/core/oauth2/console-login/constants.d.ts +19 -0
- package/dist/core/oauth2/console-login/constants.d.ts.map +1 -0
- package/dist/core/oauth2/console-login/constants.mjs +24 -0
- package/dist/core/oauth2/console-login/constants.mjs.map +1 -0
- package/dist/core/oauth2/console-login/index.d.ts +3 -0
- package/dist/core/oauth2/console-login/index.d.ts.map +1 -0
- package/dist/core/oauth2/console-login/index.mjs +5 -0
- package/dist/core/oauth2/console-login/types.d.ts +53 -0
- package/dist/core/oauth2/console-login/types.d.ts.map +1 -0
- package/dist/core/oauth2/end-session/service.mjs +1 -1
- package/dist/core/oauth2/end-session/service.mjs.map +1 -1
- package/dist/core/oauth2/federated-login/constants.d.ts +22 -0
- package/dist/core/oauth2/federated-login/constants.d.ts.map +1 -0
- package/dist/core/oauth2/federated-login/constants.mjs +27 -0
- package/dist/core/oauth2/federated-login/constants.mjs.map +1 -0
- package/dist/core/oauth2/federated-login/index.d.ts +1 -0
- package/dist/core/oauth2/federated-login/index.d.ts.map +1 -1
- package/dist/core/oauth2/federated-login/index.mjs +2 -1
- package/dist/core/oauth2/federated-login/module.d.ts +12 -3
- package/dist/core/oauth2/federated-login/module.d.ts.map +1 -1
- package/dist/core/oauth2/federated-login/module.mjs +98 -42
- package/dist/core/oauth2/federated-login/module.mjs.map +1 -1
- package/dist/core/oauth2/federated-login/types.d.ts +82 -24
- package/dist/core/oauth2/federated-login/types.d.ts.map +1 -1
- package/dist/core/oauth2/federated-login/types.mjs +5 -0
- package/dist/core/oauth2/federated-login/types.mjs.map +1 -1
- package/dist/core/oauth2/grant-types/authorize.mjs +1 -1
- package/dist/core/oauth2/grant-types/client-credentials.mjs +1 -1
- package/dist/core/oauth2/grant-types/identity.mjs +1 -1
- package/dist/core/oauth2/grant-types/password.mjs +1 -1
- package/dist/core/oauth2/grant-types/refresh-token.mjs +1 -1
- package/dist/core/oauth2/index.d.ts +4 -0
- package/dist/core/oauth2/index.d.ts.map +1 -1
- package/dist/core/oauth2/index.mjs +15 -4
- package/dist/core/oauth2/introspection/index.d.ts +3 -0
- package/dist/core/oauth2/introspection/index.d.ts.map +1 -0
- package/dist/core/oauth2/introspection/index.mjs +5 -0
- package/dist/core/oauth2/introspection/module.d.ts +14 -0
- package/dist/core/oauth2/introspection/module.d.ts.map +1 -0
- package/dist/core/oauth2/introspection/module.mjs +49 -0
- package/dist/core/oauth2/introspection/module.mjs.map +1 -0
- package/dist/core/oauth2/introspection/types.d.ts +45 -0
- package/dist/core/oauth2/introspection/types.d.ts.map +1 -0
- package/dist/core/oauth2/introspection/types.mjs +4 -0
- package/dist/core/oauth2/openid/claims.d.ts +20 -2
- package/dist/core/oauth2/openid/claims.d.ts.map +1 -1
- package/dist/core/oauth2/openid/claims.mjs +18 -4
- package/dist/core/oauth2/openid/claims.mjs.map +1 -1
- package/dist/core/oauth2/session-credential/constants.d.ts +30 -0
- package/dist/core/oauth2/session-credential/constants.d.ts.map +1 -0
- package/dist/core/oauth2/session-credential/constants.mjs +34 -0
- package/dist/core/oauth2/session-credential/constants.mjs.map +1 -0
- package/dist/core/oauth2/session-credential/index.d.ts +3 -0
- package/dist/core/oauth2/session-credential/index.d.ts.map +1 -0
- package/dist/core/oauth2/session-credential/index.mjs +6 -0
- package/dist/core/oauth2/session-credential/module.d.ts +31 -0
- package/dist/core/oauth2/session-credential/module.d.ts.map +1 -0
- package/dist/core/oauth2/session-credential/module.mjs +43 -0
- package/dist/core/oauth2/session-credential/module.mjs.map +1 -0
- package/dist/core/oauth2/session-token/constants.d.ts +10 -0
- package/dist/core/oauth2/session-token/constants.d.ts.map +1 -0
- package/dist/core/oauth2/session-token/constants.mjs +16 -0
- package/dist/core/oauth2/session-token/constants.mjs.map +1 -0
- package/dist/core/oauth2/session-token/index.d.ts +1 -0
- package/dist/core/oauth2/session-token/index.d.ts.map +1 -1
- package/dist/core/oauth2/session-token/index.mjs +2 -1
- package/dist/core/oauth2/session-token/types.d.ts +13 -2
- package/dist/core/oauth2/session-token/types.d.ts.map +1 -1
- package/dist/core/oauth2/token/verifier/module.d.ts.map +1 -1
- package/dist/core/oauth2/token/verifier/module.mjs +3 -3
- package/dist/core/oauth2/token/verifier/module.mjs.map +1 -1
- package/dist/core/provisioning/merge/module.mjs +5 -3
- package/dist/core/provisioning/merge/module.mjs.map +1 -1
- package/dist/core/query/module.mjs +1 -1
- package/dist/core/query/module.mjs.map +1 -1
- package/dist/core/security/policy/evaluator.mjs +1 -1
- package/dist/core/security/policy/evaluator.mjs.map +1 -1
- package/dist/index.mjs +62 -59
- package/dist/path.mjs +1 -1
- package/dist/swagger.json +573 -163
- package/dist/utils/error.d.ts +6 -0
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/utils/error.mjs +6 -2
- package/dist/utils/error.mjs.map +1 -1
- package/dist/utils/index.mjs +2 -2
- package/package.json +32 -26
- package/dist/adapters/http/middleware/built-in/assets.d.ts +0 -11
- package/dist/adapters/http/middleware/built-in/assets.d.ts.map +0 -1
- package/dist/adapters/http/middleware/built-in/assets.mjs +0 -91
- package/dist/adapters/http/middleware/built-in/assets.mjs.map +0 -1
- package/dist/adapters/http/middleware/built-in/theme.d.ts +0 -15
- package/dist/adapters/http/middleware/built-in/theme.d.ts.map +0 -1
- package/dist/adapters/http/middleware/built-in/theme.mjs +0 -27
- package/dist/adapters/http/middleware/built-in/theme.mjs.map +0 -1
- package/dist/adapters/http/middleware/built-in/types.d.ts +0 -14
- package/dist/adapters/http/middleware/built-in/types.d.ts.map +0 -1
- package/dist/adapters/http/middleware/built-in/ui-http-client.d.ts +0 -15
- package/dist/adapters/http/middleware/built-in/ui-http-client.d.ts.map +0 -1
- package/dist/adapters/http/middleware/built-in/ui-http-client.mjs +0 -25
- package/dist/adapters/http/middleware/built-in/ui-http-client.mjs.map +0 -1
- package/dist/adapters/http/request/helpers/redirect.d.ts +0 -14
- package/dist/adapters/http/request/helpers/redirect.d.ts.map +0 -1
- package/dist/adapters/http/request/helpers/redirect.mjs +0 -36
- package/dist/adapters/http/request/helpers/redirect.mjs.map +0 -1
- package/dist/adapters/http/ui/account-console/index.d.ts +0 -4
- package/dist/adapters/http/ui/account-console/index.d.ts.map +0 -1
- package/dist/adapters/http/ui/account-console/index.mjs +0 -6
- package/dist/adapters/http/ui/account-console/module.d.ts +0 -28
- package/dist/adapters/http/ui/account-console/module.d.ts.map +0 -1
- package/dist/adapters/http/ui/account-console/module.mjs +0 -80
- package/dist/adapters/http/ui/account-console/module.mjs.map +0 -1
- package/dist/adapters/http/ui/account-console/ref.d.ts +0 -30
- package/dist/adapters/http/ui/account-console/ref.d.ts.map +0 -1
- package/dist/adapters/http/ui/account-console/ref.mjs +0 -50
- package/dist/adapters/http/ui/account-console/ref.mjs.map +0 -1
- package/dist/adapters/http/ui/account-console/types.d.ts +0 -11
- package/dist/adapters/http/ui/account-console/types.d.ts.map +0 -1
- package/dist/adapters/http/ui/auth-console/http-client.d.ts +0 -22
- package/dist/adapters/http/ui/auth-console/http-client.d.ts.map +0 -1
- package/dist/adapters/http/ui/auth-console/http-client.mjs.map +0 -1
- package/dist/adapters/http/ui/auth-console/index.d.ts +0 -6
- package/dist/adapters/http/ui/auth-console/index.d.ts.map +0 -1
- package/dist/adapters/http/ui/auth-console/index.mjs +0 -8
- package/dist/adapters/http/ui/auth-console/module.d.ts +0 -4
- package/dist/adapters/http/ui/auth-console/module.d.ts.map +0 -1
- package/dist/adapters/http/ui/auth-console/module.mjs +0 -73
- package/dist/adapters/http/ui/auth-console/module.mjs.map +0 -1
- package/dist/adapters/http/ui/auth-console/resolve.d.ts +0 -21
- package/dist/adapters/http/ui/auth-console/resolve.d.ts.map +0 -1
- package/dist/adapters/http/ui/auth-console/resolve.mjs +0 -53
- package/dist/adapters/http/ui/auth-console/resolve.mjs.map +0 -1
- package/dist/adapters/http/ui/auth-console/serve.d.ts +0 -9
- package/dist/adapters/http/ui/auth-console/serve.d.ts.map +0 -1
- package/dist/adapters/http/ui/auth-console/serve.mjs +0 -35
- package/dist/adapters/http/ui/auth-console/serve.mjs.map +0 -1
- package/dist/adapters/http/ui/auth-console/types.d.ts +0 -26
- package/dist/adapters/http/ui/auth-console/types.d.ts.map +0 -1
- package/dist/adapters/http/ui/console-packages/index.d.ts.map +0 -1
- package/dist/adapters/http/ui/console-packages/index.mjs +0 -5
- package/dist/adapters/http/ui/console-packages/module.d.ts +0 -33
- package/dist/adapters/http/ui/console-packages/module.d.ts.map +0 -1
- package/dist/adapters/http/ui/console-packages/module.mjs +0 -70
- package/dist/adapters/http/ui/console-packages/module.mjs.map +0 -1
- package/dist/adapters/http/ui/console-packages/types.d.ts +0 -12
- package/dist/adapters/http/ui/console-packages/types.d.ts.map +0 -1
- package/dist/adapters/http/ui/index.d.ts +0 -6
- package/dist/adapters/http/ui/index.d.ts.map +0 -1
- package/dist/adapters/http/ui/index.mjs +0 -25
- package/dist/adapters/http/ui/shared/html.d.ts +0 -76
- package/dist/adapters/http/ui/shared/html.d.ts.map +0 -1
- package/dist/adapters/http/ui/shared/html.mjs +0 -104
- package/dist/adapters/http/ui/shared/html.mjs.map +0 -1
- package/dist/adapters/http/ui/shared/index.d.ts +0 -2
- package/dist/adapters/http/ui/shared/index.d.ts.map +0 -1
- package/dist/adapters/http/ui/shared/index.mjs +0 -5
- package/dist/adapters/http/ui/theme/apply.d.ts +0 -12
- package/dist/adapters/http/ui/theme/apply.d.ts.map +0 -1
- package/dist/adapters/http/ui/theme/apply.mjs +0 -29
- package/dist/adapters/http/ui/theme/apply.mjs.map +0 -1
- package/dist/adapters/http/ui/theme/assets.d.ts +0 -20
- package/dist/adapters/http/ui/theme/assets.d.ts.map +0 -1
- package/dist/adapters/http/ui/theme/assets.mjs +0 -86
- package/dist/adapters/http/ui/theme/assets.mjs.map +0 -1
- package/dist/adapters/http/ui/theme/constants.d.ts +0 -16
- package/dist/adapters/http/ui/theme/constants.d.ts.map +0 -1
- package/dist/adapters/http/ui/theme/constants.mjs +0 -20
- package/dist/adapters/http/ui/theme/constants.mjs.map +0 -1
- package/dist/adapters/http/ui/theme/contract/constants.d.ts +0 -120
- package/dist/adapters/http/ui/theme/contract/constants.d.ts.map +0 -1
- package/dist/adapters/http/ui/theme/contract/constants.mjs +0 -136
- package/dist/adapters/http/ui/theme/contract/constants.mjs.map +0 -1
- package/dist/adapters/http/ui/theme/contract/head.d.ts +0 -12
- package/dist/adapters/http/ui/theme/contract/head.d.ts.map +0 -1
- package/dist/adapters/http/ui/theme/contract/head.mjs +0 -61
- package/dist/adapters/http/ui/theme/contract/head.mjs.map +0 -1
- package/dist/adapters/http/ui/theme/contract/index.d.ts +0 -6
- package/dist/adapters/http/ui/theme/contract/index.d.ts.map +0 -1
- package/dist/adapters/http/ui/theme/contract/index.mjs +0 -8
- package/dist/adapters/http/ui/theme/contract/manifest.d.ts +0 -25
- package/dist/adapters/http/ui/theme/contract/manifest.d.ts.map +0 -1
- package/dist/adapters/http/ui/theme/contract/manifest.mjs +0 -77
- package/dist/adapters/http/ui/theme/contract/manifest.mjs.map +0 -1
- package/dist/adapters/http/ui/theme/contract/types.d.ts +0 -26
- package/dist/adapters/http/ui/theme/contract/types.d.ts.map +0 -1
- package/dist/adapters/http/ui/theme/contract/utils.d.ts +0 -11
- package/dist/adapters/http/ui/theme/contract/utils.d.ts.map +0 -1
- package/dist/adapters/http/ui/theme/contract/utils.mjs +0 -22
- package/dist/adapters/http/ui/theme/contract/utils.mjs.map +0 -1
- package/dist/adapters/http/ui/theme/index.d.ts +0 -7
- package/dist/adapters/http/ui/theme/index.d.ts.map +0 -1
- package/dist/adapters/http/ui/theme/index.mjs +0 -13
- package/dist/adapters/http/ui/theme/module.d.ts +0 -79
- package/dist/adapters/http/ui/theme/module.d.ts.map +0 -1
- package/dist/adapters/http/ui/theme/module.mjs +0 -206
- package/dist/adapters/http/ui/theme/module.mjs.map +0 -1
- package/dist/adapters/http/ui/theme/types.d.ts +0 -42
- package/dist/adapters/http/ui/theme/types.d.ts.map +0 -1
- package/dist/app/modules/config/helpers.d.ts +0 -9
- package/dist/app/modules/config/helpers.d.ts.map +0 -1
- package/dist/app/modules/config/helpers.mjs +0 -22
- package/dist/app/modules/config/helpers.mjs.map +0 -1
- package/dist/app/modules/config/normalize.d.ts +0 -3
- package/dist/app/modules/config/normalize.d.ts.map +0 -1
- package/dist/app/modules/config/normalize.mjs +0 -117
- package/dist/app/modules/config/normalize.mjs.map +0 -1
- package/dist/app/modules/config/origins.d.ts +0 -25
- package/dist/app/modules/config/origins.d.ts.map +0 -1
- package/dist/app/modules/config/origins.mjs +0 -46
- package/dist/app/modules/config/origins.mjs.map +0 -1
- package/dist/app/modules/config/read/env.d.ts +0 -3
- package/dist/app/modules/config/read/env.d.ts.map +0 -1
- package/dist/app/modules/config/read/env.mjs +0 -139
- package/dist/app/modules/config/read/env.mjs.map +0 -1
- package/dist/app/modules/config/read/fs.d.ts +0 -3
- package/dist/app/modules/config/read/fs.d.ts.map +0 -1
- package/dist/app/modules/config/read/fs.mjs +0 -60
- package/dist/app/modules/config/read/fs.mjs.map +0 -1
- package/dist/app/modules/config/read/index.d.ts +0 -5
- package/dist/app/modules/config/read/index.d.ts.map +0 -1
- package/dist/app/modules/config/read/index.mjs +0 -7
- package/dist/app/modules/config/read/module.d.ts +0 -4
- package/dist/app/modules/config/read/module.d.ts.map +0 -1
- package/dist/app/modules/config/read/module.mjs +0 -29
- package/dist/app/modules/config/read/module.mjs.map +0 -1
- package/dist/app/modules/config/read/types.d.ts +0 -9
- package/dist/app/modules/config/read/types.d.ts.map +0 -1
- package/dist/app/modules/config/trust-proxy.d.ts +0 -28
- package/dist/app/modules/config/trust-proxy.d.ts.map +0 -1
- package/dist/app/modules/config/trust-proxy.mjs +0 -64
- package/dist/app/modules/config/trust-proxy.mjs.map +0 -1
- package/dist/cli/config.d.ts +0 -18
- package/dist/cli/config.d.ts.map +0 -1
- package/dist/cli/config.mjs +0 -34
- package/dist/cli/config.mjs.map +0 -1
- package/dist/cli/types.d.ts.map +0 -1
- package/dist/utils/host.d.ts +0 -2
- package/dist/utils/host.d.ts.map +0 -1
- package/dist/utils/host.mjs +0 -12
- package/dist/utils/host.mjs.map +0 -1
- /package/dist/adapters/http/{middleware/built-in → controllers/workflows/account}/types.mjs +0 -0
- /package/dist/adapters/http/{ui/console-packages → controllers/workflows/admin}/index.d.ts +0 -0
- /package/dist/adapters/http/{ui/account-console → controllers/workflows/admin}/types.mjs +0 -0
- /package/dist/adapters/http/{ui/auth-console → controllers/workflows/console-login}/types.mjs +0 -0
- /package/dist/adapters/http/{ui/console-packages → internal-client}/types.mjs +0 -0
- /package/dist/{adapters/http/ui/theme/contract → app/modules/components}/types.mjs +0 -0
- /package/dist/cli/{types.d.ts → commands/types.d.ts} +0 -0
- /package/dist/{adapters/http/ui/theme → cli/commands}/types.mjs +0 -0
- /package/dist/{app/modules/config/read → core/oauth2/backchannel-logout}/types.mjs +0 -0
- /package/dist/{cli → core/oauth2/console-login}/types.mjs +0 -0
|
@@ -3,8 +3,7 @@ import "node:url";
|
|
|
3
3
|
import.meta.url;
|
|
4
4
|
import { useRequestLocale } from "../../../request/helpers/locale.mjs";
|
|
5
5
|
import "../../../request/index.mjs";
|
|
6
|
-
import {
|
|
7
|
-
import "../../../ui/index.mjs";
|
|
6
|
+
import { redirectToAuthConsole } from "../auth-console.mjs";
|
|
8
7
|
import { DBody, DContext, DController, DGet, DPost } from "@routup/decorators";
|
|
9
8
|
//#region src/adapters/http/controllers/workflows/password-forgot/module.ts
|
|
10
9
|
function _ts_decorate(decorators, target, key, desc) {
|
|
@@ -28,13 +27,12 @@ var PasswordForgotController = class {
|
|
|
28
27
|
this.options = ctx.options;
|
|
29
28
|
this.service = ctx.service;
|
|
30
29
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
});
|
|
30
|
+
/**
|
|
31
|
+
* The page renders in the auth console service; this hop carries the
|
|
32
|
+
* request's own parameters over to it. The POST below stays here:
|
|
33
|
+
* server-core keeps the protocol, the service keeps the render.
|
|
34
|
+
*/ async serve(event) {
|
|
35
|
+
return redirectToAuthConsole(event, this.options.authConsoleUrl, "/password-forgot");
|
|
38
36
|
}
|
|
39
37
|
async execute(data, event) {
|
|
40
38
|
const result = await this.service.forgotPassword(data, { locale: useRequestLocale(event) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["DBody","DContext","DController","DGet","DPost","useRequestLocale","
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["DBody","DContext","DController","DGet","DPost","useRequestLocale","redirectToAuthConsole","PasswordForgotController","options","service","ctx","serve","event","authConsoleUrl","execute","data","result","forgotPassword","locale","response","status"],"sources":["../../../../../../src/adapters/http/controllers/workflows/password-forgot/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { PasswordForgotPayload, PasswordForgotResponse } from '@authup/core-http-kit';\nimport {\n DBody,\n DContext,\n DController,\n DGet,\n DPost,\n} from '@routup/decorators';\nimport type { IAppEvent } from 'routup';\nimport type { IPasswordRecoveryService } from '../../../../../core/index.ts';\nimport { useRequestLocale } from '../../../request/index.ts';\nimport { redirectToAuthConsole } from '../auth-console.ts';\n\nexport type PasswordForgotControllerOptions = {\n authConsoleUrl: string,\n};\n\nexport type PasswordForgotControllerContext = {\n options: PasswordForgotControllerOptions,\n service: IPasswordRecoveryService,\n};\n\n@DController('/password-forgot')\nexport class PasswordForgotController {\n protected options: PasswordForgotControllerOptions;\n\n protected service: IPasswordRecoveryService;\n\n constructor(ctx: PasswordForgotControllerContext) {\n this.options = ctx.options;\n this.service = ctx.service;\n }\n\n /**\n * The page renders in the auth console service; this hop carries the\n * request's own parameters over to it. The POST below stays here:\n * server-core keeps the protocol, the service keeps the render.\n */\n @DGet('', [])\n async serve(@DContext() event: IAppEvent): Promise<Response> {\n return redirectToAuthConsole(event, this.options.authConsoleUrl, '/password-forgot');\n }\n\n @DPost('', [])\n async execute(\n @DBody() data: PasswordForgotPayload,\n @DContext() event: IAppEvent,\n ): Promise<PasswordForgotResponse> {\n const result = await this.service.forgotPassword(data, { locale: useRequestLocale(event) });\n\n event.response.status = 202;\n\n return result;\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;;;;;;;;;AAyBD,IAAaO,2BAAb,MAAaA;CACCC;CAEAC;CAEV,YAAYC,KAAsC;EAC9C,KAAKF,UAAUE,IAAIF;EACnB,KAAKC,UAAUC,IAAID;CACvB;;;;;IAOA,MACME,MAAM,OAAiD;EACzD,OAAOL,sBAAsBM,OAAO,KAAKJ,QAAQK,gBAAgB,kBAAA;CACrE;CAEA,MACMC,QACF,MACA,OAC+B;EAC/B,MAAME,SAAS,MAAM,KAAKP,QAAQQ,eAAeF,MAAM,EAAEG,QAAQb,iBAAiBO,KAAAA,EAAO,CAAA;EAEzFA,MAAMO,SAASC,SAAS;EAExB,OAAOJ;CACX;AACJ"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type { PasswordResetPayload, PasswordResetResponse
|
|
1
|
+
import type { PasswordResetPayload, PasswordResetResponse } from '@authup/core-http-kit';
|
|
2
2
|
import type { IAppEvent } from 'routup';
|
|
3
3
|
import type { IPasswordRecoveryService } from '../../../../../core/index.ts';
|
|
4
4
|
export type PasswordResetControllerOptions = {
|
|
5
|
-
|
|
6
|
-
features: StatusResponseFeatures;
|
|
5
|
+
authConsoleUrl: string;
|
|
7
6
|
};
|
|
8
7
|
export type PasswordResetControllerContext = {
|
|
9
8
|
options: PasswordResetControllerOptions;
|
|
@@ -13,7 +12,12 @@ export declare class PasswordResetController {
|
|
|
13
12
|
protected options: PasswordResetControllerOptions;
|
|
14
13
|
protected service: IPasswordRecoveryService;
|
|
15
14
|
constructor(ctx: PasswordResetControllerContext);
|
|
16
|
-
|
|
15
|
+
/**
|
|
16
|
+
* The page renders in the auth console service; this hop carries the
|
|
17
|
+
* request's own parameters over to it. The POST below stays here:
|
|
18
|
+
* server-core keeps the protocol, the service keeps the render.
|
|
19
|
+
*/
|
|
20
|
+
serve(event: IAppEvent): Promise<Response>;
|
|
17
21
|
execute(data: PasswordResetPayload, event: IAppEvent): Promise<PasswordResetResponse>;
|
|
18
22
|
}
|
|
19
23
|
//# sourceMappingURL=module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/password-reset/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/password-reset/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAQzF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAG7E,MAAM,MAAM,8BAA8B,GAAG;IACzC,cAAc,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IACzC,OAAO,EAAE,8BAA8B,CAAC;IACxC,OAAO,EAAE,wBAAwB,CAAC;CACrC,CAAC;AAEF,qBACa,uBAAuB;IAChC,SAAS,CAAC,OAAO,EAAE,8BAA8B,CAAC;IAElD,SAAS,CAAC,OAAO,EAAE,wBAAwB,CAAC;gBAEhC,GAAG,EAAE,8BAA8B;IAK/C;;;;OAIG;IAEG,KAAK,CAAa,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKtD,OAAO,CACA,IAAI,EAAE,oBAAoB,EACvB,KAAK,EAAE,SAAS,GAC7B,OAAO,CAAC,qBAAqB,CAAC;CAOpC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import "node:path";
|
|
2
2
|
import "node:url";
|
|
3
3
|
import.meta.url;
|
|
4
|
-
import {
|
|
5
|
-
import "../../../ui/index.mjs";
|
|
4
|
+
import { redirectToAuthConsole } from "../auth-console.mjs";
|
|
6
5
|
import { DBody, DContext, DController, DGet, DPost } from "@routup/decorators";
|
|
7
6
|
//#region src/adapters/http/controllers/workflows/password-reset/module.ts
|
|
8
7
|
function _ts_decorate(decorators, target, key, desc) {
|
|
@@ -26,14 +25,12 @@ var PasswordResetController = class {
|
|
|
26
25
|
this.options = ctx.options;
|
|
27
26
|
this.service = ctx.service;
|
|
28
27
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
tokenAware: true
|
|
36
|
-
});
|
|
28
|
+
/**
|
|
29
|
+
* The page renders in the auth console service; this hop carries the
|
|
30
|
+
* request's own parameters over to it. The POST below stays here:
|
|
31
|
+
* server-core keeps the protocol, the service keeps the render.
|
|
32
|
+
*/ async serve(event) {
|
|
33
|
+
return redirectToAuthConsole(event, this.options.authConsoleUrl, "/password-reset");
|
|
37
34
|
}
|
|
38
35
|
async execute(data, event) {
|
|
39
36
|
const result = await this.service.resetPassword(data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["DBody","DContext","DController","DGet","DPost","
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["DBody","DContext","DController","DGet","DPost","redirectToAuthConsole","PasswordResetController","options","service","ctx","serve","event","authConsoleUrl","execute","data","result","resetPassword","response","status"],"sources":["../../../../../../src/adapters/http/controllers/workflows/password-reset/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { PasswordResetPayload, PasswordResetResponse } from '@authup/core-http-kit';\nimport {\n DBody,\n DContext,\n DController,\n DGet,\n DPost,\n} from '@routup/decorators';\nimport type { IAppEvent } from 'routup';\nimport type { IPasswordRecoveryService } from '../../../../../core/index.ts';\nimport { redirectToAuthConsole } from '../auth-console.ts';\n\nexport type PasswordResetControllerOptions = {\n authConsoleUrl: string,\n};\n\nexport type PasswordResetControllerContext = {\n options: PasswordResetControllerOptions,\n service: IPasswordRecoveryService,\n};\n\n@DController('/password-reset')\nexport class PasswordResetController {\n protected options: PasswordResetControllerOptions;\n\n protected service: IPasswordRecoveryService;\n\n constructor(ctx: PasswordResetControllerContext) {\n this.options = ctx.options;\n this.service = ctx.service;\n }\n\n /**\n * The page renders in the auth console service; this hop carries the\n * request's own parameters over to it. The POST below stays here:\n * server-core keeps the protocol, the service keeps the render.\n */\n @DGet('', [])\n async serve(@DContext() event: IAppEvent): Promise<Response> {\n return redirectToAuthConsole(event, this.options.authConsoleUrl, '/password-reset');\n }\n\n @DPost('', [])\n async execute(\n @DBody() data: PasswordResetPayload,\n @DContext() event: IAppEvent,\n ): Promise<PasswordResetResponse> {\n const result = await this.service.resetPassword(data);\n\n event.response.status = 202;\n\n return result;\n }\n}\n"],"mappings":";;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;;;;;;;;;AAwBD,IAAaM,0BAAb,MAAaA;CACCC;CAEAC;CAEV,YAAYC,KAAqC;EAC7C,KAAKF,UAAUE,IAAIF;EACnB,KAAKC,UAAUC,IAAID;CACvB;;;;;IAOA,MACME,MAAM,OAAiD;EACzD,OAAOL,sBAAsBM,OAAO,KAAKJ,QAAQK,gBAAgB,iBAAA;CACrE;CAEA,MACMC,QACF,MACA,OAC8B;EAC9B,MAAME,SAAS,MAAM,KAAKP,QAAQQ,cAAcF,IAAAA;EAEhDH,MAAMM,SAASC,SAAS;EAExB,OAAOH;CACX;AACJ"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type { RegisterPayload, RegisterResponse
|
|
1
|
+
import type { RegisterPayload, RegisterResponse } from '@authup/core-http-kit';
|
|
2
2
|
import type { IAppEvent } from 'routup';
|
|
3
3
|
import type { IRegistrationService } from '../../../../../core/index.ts';
|
|
4
4
|
export type RegisterControllerOptions = {
|
|
5
|
-
|
|
6
|
-
features: StatusResponseFeatures;
|
|
5
|
+
authConsoleUrl: string;
|
|
7
6
|
};
|
|
8
7
|
export type RegisterControllerContext = {
|
|
9
8
|
options: RegisterControllerOptions;
|
|
@@ -13,7 +12,12 @@ export declare class RegisterController {
|
|
|
13
12
|
protected options: RegisterControllerOptions;
|
|
14
13
|
protected service: IRegistrationService;
|
|
15
14
|
constructor(ctx: RegisterControllerContext);
|
|
16
|
-
|
|
15
|
+
/**
|
|
16
|
+
* The page renders in the auth console service; this hop carries the
|
|
17
|
+
* request's own parameters over to it. The POST below stays here:
|
|
18
|
+
* server-core keeps the protocol, the service keeps the render.
|
|
19
|
+
*/
|
|
20
|
+
serve(event: IAppEvent): Promise<Response>;
|
|
17
21
|
execute(data: RegisterPayload, event: IAppEvent): Promise<RegisterResponse>;
|
|
18
22
|
}
|
|
19
23
|
//# sourceMappingURL=module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/register/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/register/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAQ/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAIzE,MAAM,MAAM,yBAAyB,GAAG;IACpC,cAAc,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACpC,OAAO,EAAE,yBAAyB,CAAC;IACnC,OAAO,EAAE,oBAAoB,CAAC;CACjC,CAAC;AAEF,qBACa,kBAAkB;IAC3B,SAAS,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAE7C,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAC;gBAE5B,GAAG,EAAE,yBAAyB;IAK1C;;;;OAIG;IAEG,KAAK,CAAa,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;IAKtD,OAAO,CACA,IAAI,EAAE,eAAe,EAClB,KAAK,EAAE,SAAS,GAC7B,OAAO,CAAC,gBAAgB,CAAC;CAO/B"}
|
|
@@ -3,8 +3,7 @@ import "node:url";
|
|
|
3
3
|
import.meta.url;
|
|
4
4
|
import { useRequestLocale } from "../../../request/helpers/locale.mjs";
|
|
5
5
|
import "../../../request/index.mjs";
|
|
6
|
-
import {
|
|
7
|
-
import "../../../ui/index.mjs";
|
|
6
|
+
import { redirectToAuthConsole } from "../auth-console.mjs";
|
|
8
7
|
import { DBody, DContext, DController, DGet, DPost } from "@routup/decorators";
|
|
9
8
|
//#region src/adapters/http/controllers/workflows/register/module.ts
|
|
10
9
|
function _ts_decorate(decorators, target, key, desc) {
|
|
@@ -28,13 +27,12 @@ var RegisterController = class {
|
|
|
28
27
|
this.options = ctx.options;
|
|
29
28
|
this.service = ctx.service;
|
|
30
29
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
});
|
|
30
|
+
/**
|
|
31
|
+
* The page renders in the auth console service; this hop carries the
|
|
32
|
+
* request's own parameters over to it. The POST below stays here:
|
|
33
|
+
* server-core keeps the protocol, the service keeps the render.
|
|
34
|
+
*/ async serve(event) {
|
|
35
|
+
return redirectToAuthConsole(event, this.options.authConsoleUrl, "/register");
|
|
38
36
|
}
|
|
39
37
|
async execute(data, event) {
|
|
40
38
|
const result = await this.service.register(data, { locale: useRequestLocale(event) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["DBody","DContext","DController","DGet","DPost","useRequestLocale","
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["DBody","DContext","DController","DGet","DPost","useRequestLocale","redirectToAuthConsole","RegisterController","options","service","ctx","serve","event","authConsoleUrl","execute","data","result","register","locale","response","status"],"sources":["../../../../../../src/adapters/http/controllers/workflows/register/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { RegisterPayload, RegisterResponse } from '@authup/core-http-kit';\nimport {\n DBody,\n DContext,\n DController,\n DGet,\n DPost,\n} from '@routup/decorators';\nimport type { IAppEvent } from 'routup';\nimport type { IRegistrationService } from '../../../../../core/index.ts';\nimport { useRequestLocale } from '../../../request/index.ts';\nimport { redirectToAuthConsole } from '../auth-console.ts';\n\nexport type RegisterControllerOptions = {\n authConsoleUrl: string,\n};\n\nexport type RegisterControllerContext = {\n options: RegisterControllerOptions,\n service: IRegistrationService,\n};\n\n@DController('/register')\nexport class RegisterController {\n protected options: RegisterControllerOptions;\n\n protected service: IRegistrationService;\n\n constructor(ctx: RegisterControllerContext) {\n this.options = ctx.options;\n this.service = ctx.service;\n }\n\n /**\n * The page renders in the auth console service; this hop carries the\n * request's own parameters over to it. The POST below stays here:\n * server-core keeps the protocol, the service keeps the render.\n */\n @DGet('', [])\n async serve(@DContext() event: IAppEvent): Promise<Response> {\n return redirectToAuthConsole(event, this.options.authConsoleUrl, '/register');\n }\n\n @DPost('', [])\n async execute(\n @DBody() data: RegisterPayload,\n @DContext() event: IAppEvent,\n ): Promise<RegisterResponse> {\n const result = await this.service.register(data, { locale: useRequestLocale(event) });\n\n event.response.status = 202;\n\n return result;\n }\n}\n"],"mappings":";;;;;;;;AAKC,SAAA,aAAA,YAAA,QAAA,KAAA,MAAA;;;;;;;;;;;;;;AAyBD,IAAaO,qBAAb,MAAaA;CACCC;CAEAC;CAEV,YAAYC,KAAgC;EACxC,KAAKF,UAAUE,IAAIF;EACnB,KAAKC,UAAUC,IAAID;CACvB;;;;;IAOA,MACME,MAAM,OAAiD;EACzD,OAAOL,sBAAsBM,OAAO,KAAKJ,QAAQK,gBAAgB,WAAA;CACrE;CAEA,MACMC,QACF,MACA,OACyB;EACzB,MAAME,SAAS,MAAM,KAAKP,QAAQQ,SAASF,MAAM,EAAEG,QAAQb,iBAAiBO,KAAAA,EAAO,CAAA;EAEnFA,MAAMO,SAASC,SAAS;EAExB,OAAOJ;CACX;AACJ"}
|
|
@@ -3,8 +3,8 @@ import "node:url";
|
|
|
3
3
|
import.meta.url;
|
|
4
4
|
import { PACKAGE_PATH } from "../../../../../path.mjs";
|
|
5
5
|
import path from "node:path";
|
|
6
|
-
import { read } from "locter";
|
|
7
6
|
import { DController, DGet } from "@routup/decorators";
|
|
7
|
+
import { read } from "locter";
|
|
8
8
|
//#region src/adapters/http/controllers/workflows/status/module.ts
|
|
9
9
|
function _ts_decorate(decorators, target, key, desc) {
|
|
10
10
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import type { OAuth2TokenGrantResponse, OAuth2TokenIntrospectionResponse } from '@authup/specs';
|
|
1
|
+
import type { OAuth2TokenGrantResponse, OAuth2TokenIntrospectionResponse, OAuth2TokenPayload } from '@authup/specs';
|
|
2
2
|
import { OAuth2TokenGrant } from '@authup/specs';
|
|
3
3
|
import type { IAppEvent } from 'routup';
|
|
4
|
+
import type { Logger } from '@authup/server-kit';
|
|
4
5
|
import type { TokenControllerContext } from './types.ts';
|
|
5
|
-
import type { IAuthFlowMetrics, IIdentityPermissionProvider, IIdentityResolver, IOAuth2TokenIssuer, IOAuth2TokenRevoker, IOAuth2TokenVerifier } from '../../../../../core/index.ts';
|
|
6
|
+
import type { IAuthFlowMetrics, IIdentityPermissionProvider, IIdentityResolver, IOAuth2TokenIssuer, IOAuth2TokenRevoker, IOAuth2TokenVerifier, OAuth2ClientAuthenticator } from '../../../../../core/index.ts';
|
|
6
7
|
import type { IHTTPOAuth2Grant } from '../../../adapters/index.ts';
|
|
8
|
+
import type { CertificateSource } from '../../../request/index.ts';
|
|
7
9
|
export declare class TokenController {
|
|
8
10
|
protected refreshTokenIssuer: IOAuth2TokenIssuer;
|
|
9
11
|
protected accessTokenIssuer: IOAuth2TokenIssuer;
|
|
@@ -12,10 +14,51 @@ export declare class TokenController {
|
|
|
12
14
|
protected identityResolver: IIdentityResolver;
|
|
13
15
|
protected identityPermissionProvider: IIdentityPermissionProvider;
|
|
14
16
|
protected metrics?: IAuthFlowMetrics;
|
|
17
|
+
protected clientAuthenticator: OAuth2ClientAuthenticator;
|
|
18
|
+
protected certificateSource: CertificateSource;
|
|
19
|
+
protected logger?: Logger;
|
|
15
20
|
protected tokenGrants: Record<`${OAuth2TokenGrant}`, IHTTPOAuth2Grant>;
|
|
16
21
|
constructor(ctx: TokenControllerContext);
|
|
17
22
|
getIntrospect(event: IAppEvent): Promise<OAuth2TokenIntrospectionResponse>;
|
|
18
23
|
postIntrospect(event: IAppEvent): Promise<OAuth2TokenIntrospectionResponse>;
|
|
24
|
+
/**
|
|
25
|
+
* RFC 7662 §2.1: the endpoint MUST require authorization, "such as client
|
|
26
|
+
* authentication [...] or a separate OAuth 2.0 access token". The
|
|
27
|
+
* credential has to be INDEPENDENT of the token being introspected, since
|
|
28
|
+
* possession of that string is exactly what a finder has too (#3489): a
|
|
29
|
+
* request identity the authorization middleware resolved (the kit's own
|
|
30
|
+
* live bearer, a resource server's client-credentials bearer, Basic), or
|
|
31
|
+
* confidential client credentials as the grants read them. A bare public
|
|
32
|
+
* `client_id` identifies and authenticates nothing, so it is refused like
|
|
33
|
+
* the client-credentials grant refuses it.
|
|
34
|
+
*
|
|
35
|
+
* An expired bearer never reaches this point: the middleware answers 401
|
|
36
|
+
* before the route runs. So the expired report in `postIntrospect` is only
|
|
37
|
+
* ever handed to a caller that proved who it is, which is what makes it
|
|
38
|
+
* safe to give.
|
|
39
|
+
*/
|
|
40
|
+
protected assertIntrospectionAuthorized(event: IAppEvent): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* WHOSE tokens the authenticated caller may introspect (#3489, second
|
|
43
|
+
* layer): its own subject's, those issued for its own client, or any its
|
|
44
|
+
* TOKEN_INTROSPECT grant reaches (the grant's realm scope is matched
|
|
45
|
+
* against the token's realm claim, so an `admin` reaches everything and
|
|
46
|
+
* a `realm_admin` its own realm). A resource server verifying foreign
|
|
47
|
+
* tokens through the server adapters' remote mode needs that grant. The
|
|
48
|
+
* deny is reported per RFC 7662 §2.2 as a bare `active: false`, which
|
|
49
|
+
* gives the caller nothing to diagnose with, hence the log line.
|
|
50
|
+
*/
|
|
51
|
+
protected isIntrospectionAllowed(event: IAppEvent, payload: OAuth2TokenPayload): Promise<boolean>;
|
|
52
|
+
/**
|
|
53
|
+
* Deliberately ungated, unlike introspection (#3489). RFC 7009 §2.1 asks
|
|
54
|
+
* the client to send its credentials (a bare `client_id` for a public
|
|
55
|
+
* client) and the server to verify the token was issued to that client;
|
|
56
|
+
* authup knowingly skips both. A public `client_id` identifies and
|
|
57
|
+
* proves nothing, so an ownership check built on it would be advisory,
|
|
58
|
+
* the consoles are public clients whose kit revokes anonymously on
|
|
59
|
+
* logout teardown, revoking a token one possesses is the benign action,
|
|
60
|
+
* and the uniform 200 below leaves a scanner nothing to learn.
|
|
61
|
+
*/
|
|
19
62
|
revokeToken(event: IAppEvent): Promise<null>;
|
|
20
63
|
createToken(event: IAppEvent): Promise<OAuth2TokenGrantResponse>;
|
|
21
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/token/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/adapters/http/controllers/workflows/token/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACR,wBAAwB,EACxB,gCAAgC,EAChC,kBAAkB,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAIH,gBAAgB,EAGnB,MAAM,eAAe,CAAC;AAgBvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EACR,gBAAgB,EAChB,2BAA2B,EAC3B,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EAC5B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAWnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAUnE,qBAEa,eAAe;IACxB,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAEjD,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAEhD,SAAS,CAAC,aAAa,EAAE,oBAAoB,CAAC;IAE9C,SAAS,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAE5C,SAAS,CAAC,gBAAgB,EAAG,iBAAiB,CAAC;IAE/C,SAAS,CAAC,0BAA0B,EAAG,2BAA2B,CAAC;IAEnE,SAAS,CAAC,OAAO,CAAC,EAAG,gBAAgB,CAAC;IAEtC,SAAS,CAAC,mBAAmB,EAAG,yBAAyB,CAAC;IAE1D,SAAS,CAAC,iBAAiB,EAAG,iBAAiB,CAAC;IAEhD,SAAS,CAAC,MAAM,CAAC,EAAG,MAAM,CAAC;IAE3B,SAAS,CAAC,WAAW,EAAG,MAAM,CAAC,GAAG,gBAAgB,EAAE,EAAE,gBAAgB,CAAC,CAAC;gBAI5D,GAAG,EAAE,sBAAsB;IAmEjC,aAAa,CAAa,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,gCAAgC,CAAC;IAKtF,cAAc,CACJ,KAAK,EAAE,SAAS,GAC7B,OAAO,CAAC,gCAAgC,CAAC;IAgH5C;;;;;;;;;;;;;;;OAeG;cACa,6BAA6B,CAAC,KAAK,EAAE,SAAS,GAAI,OAAO,CAAC,IAAI,CAAC;IAiC/E;;;;;;;;;OASG;cACa,sBAAsB,CAClC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,kBAAkB,GAC3B,OAAO,CAAC,OAAO,CAAC;IAuCpB;;;;;;;;;OASG;IAEG,WAAW,CACD,KAAK,EAAE,SAAS,GAC7B,OAAO,CAAC,IAAI,CAAC;IA6CV,WAAW,CAAa,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC;CAiBrF"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import "node:path";
|
|
2
2
|
import "node:url";
|
|
3
3
|
import.meta.url;
|
|
4
|
-
import {
|
|
4
|
+
import { resolveIntrospectionSubject } from "../../../../../core/oauth2/introspection/module.mjs";
|
|
5
5
|
import "../../../../../core/index.mjs";
|
|
6
|
+
import { setRequestIdentity, useRequestIdentity, useRequestIdentityOrFail } from "../../../request/helpers/identity.mjs";
|
|
7
|
+
import { buildActorContext } from "../../../request/helpers/actor.mjs";
|
|
8
|
+
import { setRequestScopes } from "../../../request/helpers/scopes.mjs";
|
|
9
|
+
import "../../../request/index.mjs";
|
|
10
|
+
import { extractOAuth2ClientCertificateEvidence } from "../../../adapters/oauth2/grant-types/utils/certificate.mjs";
|
|
11
|
+
import { extractClientCredentialsFromRequest } from "../../../adapters/oauth2/grant-types/utils/credentials.mjs";
|
|
6
12
|
import { guessOauth2GrantTypeByRequest } from "../../../adapters/oauth2/grant-types/utils/guess.mjs";
|
|
13
|
+
import { readRealmHint } from "../../../adapters/oauth2/grant-types/utils/realm.mjs";
|
|
7
14
|
import { HTTPOAuth2AuthorizeGrant } from "../../../adapters/oauth2/grant-types/authorize.mjs";
|
|
8
15
|
import { HTTPClientCredentialsGrant } from "../../../adapters/oauth2/grant-types/client-credentials.mjs";
|
|
9
16
|
import { HTTPPasswordGrant } from "../../../adapters/oauth2/grant-types/password.mjs";
|
|
@@ -13,8 +20,10 @@ import { toOAuth2Error } from "../../../../../core/oauth2/helpers/error.mjs";
|
|
|
13
20
|
import "../../../../../core/oauth2/helpers/index.mjs";
|
|
14
21
|
import { extractTokenFromRequest } from "./utils/extract.mjs";
|
|
15
22
|
import "./utils/index.mjs";
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
23
|
+
import { ClientAuthMethod, IdentityType, PermissionName, ScopeName } from "@authup/core-kit";
|
|
24
|
+
import { BuiltInPolicyType, PolicyData } from "@authup/access";
|
|
25
|
+
import { OAuth2ClientError, OAuth2GrantTypeError, OAuth2RequestError, OAuth2TokenGrant, OAuth2TokenKind, isJWTError } from "@authup/specs";
|
|
26
|
+
import { readRequestBody } from "@routup/basic/body";
|
|
18
27
|
import { DContext, DController, DGet, DPost, DTags } from "@routup/decorators";
|
|
19
28
|
//#region src/adapters/http/controllers/workflows/token/module.ts
|
|
20
29
|
function _ts_decorate(decorators, target, key, desc) {
|
|
@@ -39,6 +48,9 @@ var TokenController = class {
|
|
|
39
48
|
identityResolver;
|
|
40
49
|
identityPermissionProvider;
|
|
41
50
|
metrics;
|
|
51
|
+
clientAuthenticator;
|
|
52
|
+
certificateSource;
|
|
53
|
+
logger;
|
|
42
54
|
tokenGrants;
|
|
43
55
|
constructor(ctx) {
|
|
44
56
|
this.refreshTokenIssuer = ctx.refreshTokenIssuer;
|
|
@@ -48,6 +60,9 @@ var TokenController = class {
|
|
|
48
60
|
this.identityResolver = ctx.identityResolver;
|
|
49
61
|
this.identityPermissionProvider = ctx.identityPermissionProvider;
|
|
50
62
|
this.metrics = ctx.metrics;
|
|
63
|
+
this.clientAuthenticator = ctx.oauth2ClientAuthenticator;
|
|
64
|
+
this.certificateSource = ctx.certificateSource;
|
|
65
|
+
this.logger = ctx.logger;
|
|
51
66
|
this.tokenGrants = {
|
|
52
67
|
[OAuth2TokenGrant.AUTHORIZATION_CODE]: new HTTPOAuth2AuthorizeGrant({
|
|
53
68
|
codeVerifier: ctx.codeVerifier,
|
|
@@ -103,41 +118,113 @@ var TokenController = class {
|
|
|
103
118
|
return this.postIntrospect(event);
|
|
104
119
|
}
|
|
105
120
|
async postIntrospect(event) {
|
|
121
|
+
await this.assertIntrospectionAuthorized(event);
|
|
106
122
|
try {
|
|
107
123
|
const token = await extractTokenFromRequest(event);
|
|
108
|
-
const payload = await this.tokenVerifier.verify(token, {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
id: payload.sub,
|
|
112
|
-
type: payload.sub_kind,
|
|
113
|
-
clientId: payload.client_id,
|
|
114
|
-
realmId: payload.realm_id
|
|
124
|
+
const payload = await this.tokenVerifier.verify(token, {
|
|
125
|
+
ignoreExpiry: true,
|
|
126
|
+
skipActiveCheck: true
|
|
115
127
|
});
|
|
116
|
-
|
|
117
|
-
if (!
|
|
118
|
-
|
|
128
|
+
if (payload.kind === OAuth2TokenKind.LOGOUT) return { active: false };
|
|
129
|
+
if (!await this.isIntrospectionAllowed(event, payload)) return { active: false };
|
|
130
|
+
if (!payload.sub || !payload.sub_kind) throw OAuth2RequestError.identityInvalid();
|
|
119
131
|
let active;
|
|
120
|
-
if (payload.jti) active = !await this.tokenVerifier.isInactive(payload.jti);
|
|
132
|
+
if (payload.jti && typeof payload.exp === "number") active = !await this.tokenVerifier.isInactive(payload.jti) && payload.exp * 1e3 > Date.now();
|
|
121
133
|
else active = false;
|
|
134
|
+
const subject = await resolveIntrospectionSubject({
|
|
135
|
+
identityResolver: this.identityResolver,
|
|
136
|
+
identityPermissionProvider: this.identityPermissionProvider
|
|
137
|
+
}, {
|
|
138
|
+
sub: payload.sub,
|
|
139
|
+
subKind: payload.sub_kind,
|
|
140
|
+
clientId: payload.client_id,
|
|
141
|
+
realmId: payload.realm_id,
|
|
142
|
+
active
|
|
143
|
+
});
|
|
144
|
+
if (!active) return {
|
|
145
|
+
active,
|
|
146
|
+
...payload,
|
|
147
|
+
...subject.claims
|
|
148
|
+
};
|
|
122
149
|
return {
|
|
123
150
|
active,
|
|
124
|
-
permissions:
|
|
125
|
-
const key = buildPermissionKey(binding.permission);
|
|
126
|
-
if (!acc[key]) acc[key] = {
|
|
127
|
-
name: binding.permission.name,
|
|
128
|
-
client_id: binding.permission.clientId,
|
|
129
|
-
realm_id: binding.permission.realmId
|
|
130
|
-
};
|
|
131
|
-
return acc;
|
|
132
|
-
}, {})),
|
|
151
|
+
permissions: subject.permissions,
|
|
133
152
|
...payload,
|
|
134
|
-
...claims
|
|
153
|
+
...subject.claims
|
|
135
154
|
};
|
|
136
155
|
} catch (e) {
|
|
156
|
+
if (isJWTError(e)) return { active: false };
|
|
137
157
|
throw toOAuth2Error(e);
|
|
138
158
|
}
|
|
139
159
|
}
|
|
140
|
-
|
|
160
|
+
/**
|
|
161
|
+
* RFC 7662 §2.1: the endpoint MUST require authorization, "such as client
|
|
162
|
+
* authentication [...] or a separate OAuth 2.0 access token". The
|
|
163
|
+
* credential has to be INDEPENDENT of the token being introspected, since
|
|
164
|
+
* possession of that string is exactly what a finder has too (#3489): a
|
|
165
|
+
* request identity the authorization middleware resolved (the kit's own
|
|
166
|
+
* live bearer, a resource server's client-credentials bearer, Basic), or
|
|
167
|
+
* confidential client credentials as the grants read them. A bare public
|
|
168
|
+
* `client_id` identifies and authenticates nothing, so it is refused like
|
|
169
|
+
* the client-credentials grant refuses it.
|
|
170
|
+
*
|
|
171
|
+
* An expired bearer never reaches this point: the middleware answers 401
|
|
172
|
+
* before the route runs. So the expired report in `postIntrospect` is only
|
|
173
|
+
* ever handed to a caller that proved who it is, which is what makes it
|
|
174
|
+
* safe to give.
|
|
175
|
+
*/ async assertIntrospectionAuthorized(event) {
|
|
176
|
+
if (useRequestIdentity(event)) return;
|
|
177
|
+
const { clientId, clientSecret } = await extractClientCredentialsFromRequest(event);
|
|
178
|
+
if (!clientId) {
|
|
179
|
+
useRequestIdentityOrFail(event);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const body = await readRequestBody(event);
|
|
183
|
+
const certificateEvidence = await extractOAuth2ClientCertificateEvidence(event, this.certificateSource);
|
|
184
|
+
const client = await this.clientAuthenticator.authenticate(clientId, clientSecret, readRealmHint(body), certificateEvidence);
|
|
185
|
+
if (client.authMethod === ClientAuthMethod.NONE) throw OAuth2ClientError.invalid();
|
|
186
|
+
setRequestScopes(event, [ScopeName.GLOBAL]);
|
|
187
|
+
setRequestIdentity(event, {
|
|
188
|
+
type: IdentityType.CLIENT,
|
|
189
|
+
data: client
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* WHOSE tokens the authenticated caller may introspect (#3489, second
|
|
194
|
+
* layer): its own subject's, those issued for its own client, or any its
|
|
195
|
+
* TOKEN_INTROSPECT grant reaches (the grant's realm scope is matched
|
|
196
|
+
* against the token's realm claim, so an `admin` reaches everything and
|
|
197
|
+
* a `realm_admin` its own realm). A resource server verifying foreign
|
|
198
|
+
* tokens through the server adapters' remote mode needs that grant. The
|
|
199
|
+
* deny is reported per RFC 7662 §2.2 as a bare `active: false`, which
|
|
200
|
+
* gives the caller nothing to diagnose with, hence the log line.
|
|
201
|
+
*/ async isIntrospectionAllowed(event, payload) {
|
|
202
|
+
const identity = useRequestIdentity(event);
|
|
203
|
+
if (!identity) return false;
|
|
204
|
+
if (payload.sub && identity.type === payload.sub_kind && identity.id === payload.sub) return true;
|
|
205
|
+
if (identity.type === IdentityType.CLIENT && payload.client_id && identity.id === payload.client_id) return true;
|
|
206
|
+
const actor = buildActorContext(event);
|
|
207
|
+
try {
|
|
208
|
+
await actor.permissionEvaluator.evaluate({
|
|
209
|
+
name: PermissionName.TOKEN_INTROSPECT,
|
|
210
|
+
data: new PolicyData({ ...payload.realm_id ? { [BuiltInPolicyType.REALM_MATCH]: payload.realm_id } : {} })
|
|
211
|
+
});
|
|
212
|
+
return true;
|
|
213
|
+
} catch {
|
|
214
|
+
this.logger?.info(`introspection denied: ${identity.type} ${identity.id} may not introspect the presented token`);
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Deliberately ungated, unlike introspection (#3489). RFC 7009 §2.1 asks
|
|
220
|
+
* the client to send its credentials (a bare `client_id` for a public
|
|
221
|
+
* client) and the server to verify the token was issued to that client;
|
|
222
|
+
* authup knowingly skips both. A public `client_id` identifies and
|
|
223
|
+
* proves nothing, so an ownership check built on it would be advisory,
|
|
224
|
+
* the consoles are public clients whose kit revokes anonymously on
|
|
225
|
+
* logout teardown, revoking a token one possesses is the benign action,
|
|
226
|
+
* and the uniform 200 below leaves a scanner nothing to learn.
|
|
227
|
+
*/ async revokeToken(event) {
|
|
141
228
|
try {
|
|
142
229
|
const token = await extractTokenFromRequest(event);
|
|
143
230
|
const payload = await this.tokenVerifier.verify(token, {
|
|
@@ -145,9 +232,13 @@ var TokenController = class {
|
|
|
145
232
|
skipActiveCheck: true
|
|
146
233
|
});
|
|
147
234
|
await this.tokenRevoker.revoke(payload);
|
|
148
|
-
event.response.status =
|
|
235
|
+
event.response.status = 200;
|
|
149
236
|
return null;
|
|
150
237
|
} catch (e) {
|
|
238
|
+
if (isJWTError(e)) {
|
|
239
|
+
event.response.status = 200;
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
151
242
|
throw toOAuth2Error(e);
|
|
152
243
|
}
|
|
153
244
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["OAuth2GrantTypeError","OAuth2RequestError","OAuth2TokenGrant","DContext","DController","DGet","DPost","DTags","buildPermissionKey","toOAuth2Error","OAuth2OpenIDClaimsBuilder","HTTPClientCredentialsGrant","HTTPOAuth2AuthorizeGrant","HTTPOAuth2RefreshTokenGrant","HTTPPasswordGrant","guessOauth2GrantTypeByRequest","extractTokenFromRequest","TokenController","refreshTokenIssuer","accessTokenIssuer","tokenVerifier","tokenRevoker","identityResolver","identityPermissionProvider","metrics","tokenGrants","ctx","AUTHORIZATION_CODE","codeVerifier","clientAuthenticator","oauth2ClientAuthenticator","openIdTokenIssuer","keyStore","sessionManager","realmRepository","accessPolicyEvaluator","certificateSource","CLIENT_CREDENTIALS","PASSWORD","authenticator","userAuthenticator","eventService","loginThrottleService","userAuthenticatorService","mfaLoginService","logger","REFRESH_TOKEN","tokenRepository","sessionTokenRepository","options","gracePeriod","tokenRefreshGracePeriod","getIntrospect","event","postIntrospect","token","payload","verify","skipActiveCheck","sub","sub_kind","identityInvalid","permissions","getFor","id","type","clientId","client_id","realmId","realm_id","identity","resolve","claimsBuilder","claims","fromIdentity","active","jti","isInactive","Object","values","reduce","acc","binding","key","permission","name","e","revokeToken","ignoreExpiry","revoke","response","status","createToken","grantType","unsupported","grant","runWithRequest","recordTokenGrant"],"sources":["../../../../../../src/adapters/http/controllers/workflows/token/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { OAuth2TokenGrantResponse, OAuth2TokenIntrospectionResponse, OAuth2TokenPermission } from '@authup/specs';\nimport { OAuth2GrantTypeError, OAuth2RequestError, OAuth2TokenGrant } from '@authup/specs';\nimport {\n DContext,\n DController,\n DGet,\n DPost,\n DTags,\n} from '@routup/decorators';\nimport type { IAppEvent } from 'routup';\nimport { buildPermissionKey } from '@authup/access';\nimport { toOAuth2Error } from '../../../../../core/oauth2/helpers/index.ts';\nimport type { TokenControllerContext } from './types.ts';\nimport type {\n IAuthFlowMetrics,\n IIdentityPermissionProvider,\n IIdentityResolver,\n IOAuth2TokenIssuer,\n IOAuth2TokenRevoker,\n IOAuth2TokenVerifier,\n} from '../../../../../core/index.ts';\nimport { OAuth2OpenIDClaimsBuilder } from '../../../../../core/index.ts';\nimport type { IHTTPOAuth2Grant } from '../../../adapters/index.ts';\nimport {\n HTTPClientCredentialsGrant,\n HTTPOAuth2AuthorizeGrant,\n HTTPOAuth2RefreshTokenGrant,\n HTTPPasswordGrant,\n guessOauth2GrantTypeByRequest,\n} from '../../../adapters/index.ts';\nimport { extractTokenFromRequest } from './utils/index.ts';\n\n@DTags('auth')\n@DController('/token')\nexport class TokenController {\n protected refreshTokenIssuer: IOAuth2TokenIssuer;\n\n protected accessTokenIssuer: IOAuth2TokenIssuer;\n\n protected tokenVerifier: IOAuth2TokenVerifier;\n\n protected tokenRevoker: IOAuth2TokenRevoker;\n\n protected identityResolver : IIdentityResolver;\n\n protected identityPermissionProvider : IIdentityPermissionProvider;\n\n protected metrics? : IAuthFlowMetrics;\n\n protected tokenGrants : Record<`${OAuth2TokenGrant}`, IHTTPOAuth2Grant>;\n\n // -------------------------------------------\n\n constructor(ctx: TokenControllerContext) {\n this.refreshTokenIssuer = ctx.refreshTokenIssuer;\n this.accessTokenIssuer = ctx.accessTokenIssuer;\n this.tokenVerifier = ctx.tokenVerifier;\n this.tokenRevoker = ctx.tokenRevoker;\n this.identityResolver = ctx.identityResolver;\n this.identityPermissionProvider = ctx.identityPermissionProvider;\n this.metrics = ctx.metrics;\n\n this.tokenGrants = {\n [OAuth2TokenGrant.AUTHORIZATION_CODE]: new HTTPOAuth2AuthorizeGrant({\n codeVerifier: ctx.codeVerifier,\n clientAuthenticator: ctx.oauth2ClientAuthenticator,\n accessTokenIssuer: ctx.accessTokenIssuer,\n refreshTokenIssuer: ctx.refreshTokenIssuer,\n openIdTokenIssuer: ctx.openIdTokenIssuer,\n keyStore: ctx.keyStore,\n sessionManager: ctx.sessionManager,\n realmRepository: ctx.realmRepository,\n accessPolicyEvaluator: ctx.accessPolicyEvaluator,\n certificateSource: ctx.certificateSource,\n }),\n [OAuth2TokenGrant.CLIENT_CREDENTIALS]: new HTTPClientCredentialsGrant({\n accessTokenIssuer: ctx.accessTokenIssuer,\n clientAuthenticator: ctx.oauth2ClientAuthenticator,\n sessionManager: ctx.sessionManager,\n certificateSource: ctx.certificateSource,\n }),\n [OAuth2TokenGrant.PASSWORD]: new HTTPPasswordGrant({\n accessTokenIssuer: ctx.accessTokenIssuer,\n refreshTokenIssuer: ctx.refreshTokenIssuer,\n authenticator: ctx.userAuthenticator,\n clientAuthenticator: ctx.oauth2ClientAuthenticator,\n sessionManager: ctx.sessionManager,\n realmRepository: ctx.realmRepository,\n eventService: ctx.eventService,\n metrics: ctx.metrics,\n loginThrottleService: ctx.loginThrottleService,\n userAuthenticatorService: ctx.userAuthenticatorService,\n mfaLoginService: ctx.mfaLoginService,\n logger: ctx.logger,\n certificateSource: ctx.certificateSource,\n }),\n [OAuth2TokenGrant.REFRESH_TOKEN]: new HTTPOAuth2RefreshTokenGrant({\n accessTokenIssuer: ctx.accessTokenIssuer,\n refreshTokenIssuer: ctx.refreshTokenIssuer,\n tokenVerifier: ctx.tokenVerifier,\n tokenRepository: ctx.tokenRepository,\n sessionTokenRepository: ctx.sessionTokenRepository,\n sessionManager: ctx.sessionManager,\n clientAuthenticator: ctx.oauth2ClientAuthenticator,\n realmRepository: ctx.realmRepository,\n eventService: ctx.eventService,\n metrics: ctx.metrics,\n logger: ctx.logger,\n options: { gracePeriod: ctx.tokenRefreshGracePeriod },\n certificateSource: ctx.certificateSource,\n }),\n };\n }\n\n // -------------------------------------------\n\n @DGet('/introspect', [])\n async getIntrospect(@DContext() event: IAppEvent): Promise<OAuth2TokenIntrospectionResponse> {\n return this.postIntrospect(event);\n }\n\n @DPost('/introspect', [])\n async postIntrospect(\n @DContext() event: IAppEvent,\n ): Promise<OAuth2TokenIntrospectionResponse> {\n try {\n const token = await extractTokenFromRequest(event);\n const payload = await this.tokenVerifier.verify(token, { skipActiveCheck: true });\n if (!payload.sub || !payload.sub_kind) {\n throw OAuth2RequestError.identityInvalid();\n }\n\n // todo: only receive client specific permissions\n const permissions = await this.identityPermissionProvider.getFor({\n id: payload.sub,\n type: payload.sub_kind,\n clientId: payload.client_id,\n realmId: payload.realm_id,\n });\n\n const identity = await this.identityResolver.resolve(payload.sub_kind, payload.sub);\n if (!identity) {\n // todo: differentiate between client & user\n throw OAuth2RequestError.identityInvalid();\n }\n\n const claimsBuilder = new OAuth2OpenIDClaimsBuilder();\n const claims = claimsBuilder.fromIdentity(identity);\n\n let active : boolean;\n if (payload.jti) {\n const isInactive = await this.tokenVerifier.isInactive(payload.jti);\n active = !isInactive;\n } else {\n active = false;\n }\n\n return {\n active,\n // todo: permissions property should be removed.\n permissions: Object.values(\n permissions.reduce((acc, binding) => {\n const key = buildPermissionKey(binding.permission);\n if (!acc[key]) {\n acc[key] = {\n name: binding.permission.name,\n client_id: binding.permission.clientId,\n realm_id: binding.permission.realmId,\n } as OAuth2TokenPermission;\n }\n return acc;\n }, {} as Record<string, OAuth2TokenPermission>),\n ),\n ...payload,\n ...claims,\n };\n } catch (e) {\n throw toOAuth2Error(e);\n }\n }\n\n // ----------------------------------------------------------\n\n @DPost('/revoke', [])\n async revokeToken(\n @DContext() event: IAppEvent,\n ): Promise<null> {\n try {\n const token = await extractTokenFromRequest(event);\n\n // RFC 7009 §2.2: revoking an invalid token — here one that is expired\n // or already inactive — MUST still succeed. The client cannot act on\n // an error, and the token's invalidation (the point of the request)\n // is already achieved. Signature + kind still anchor the token, so a\n // forged/garbage token is rejected; `ignoreExpiry` additionally keeps\n // this exp-bypass out of the shared claims cache (see\n // OAuth2TokenVerifier). Without this, revoking a stale refresh token\n // threw `expired_token`, so the caller's revoke-then-clear-cookie\n // flow aborted, the durable row was never soft-revoked, and the stale\n // refresh cookie survived into the next login.\n const payload = await this.tokenVerifier.verify(token, {\n ignoreExpiry: true,\n skipActiveCheck: true,\n });\n\n await this.tokenRevoker.revoke(payload);\n\n event.response.status = 202;\n return null;\n } catch (e) {\n throw toOAuth2Error(e);\n }\n }\n\n // ----------------------------------------------------------\n\n @DPost('', [])\n async createToken(@DContext() event: IAppEvent): Promise<OAuth2TokenGrantResponse> {\n const grantType = await guessOauth2GrantTypeByRequest(event);\n if (!grantType) {\n throw OAuth2GrantTypeError.unsupported();\n }\n\n const grant = this.tokenGrants[grantType];\n if (!grant) {\n throw OAuth2GrantTypeError.unsupported();\n }\n\n const response = await grant.runWithRequest(event);\n\n this.metrics?.recordTokenGrant(grantType);\n\n return response;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["OAuth2ClientError","OAuth2GrantTypeError","OAuth2RequestError","OAuth2TokenGrant","OAuth2TokenKind","isJWTError","ClientAuthMethod","IdentityType","PermissionName","ScopeName","BuiltInPolicyType","PolicyData","readRequestBody","DContext","DController","DGet","DPost","DTags","toOAuth2Error","resolveIntrospectionSubject","HTTPClientCredentialsGrant","HTTPOAuth2AuthorizeGrant","HTTPOAuth2RefreshTokenGrant","HTTPPasswordGrant","extractClientCredentialsFromRequest","extractOAuth2ClientCertificateEvidence","guessOauth2GrantTypeByRequest","readRealmHint","buildActorContext","setRequestIdentity","setRequestScopes","useRequestIdentity","useRequestIdentityOrFail","extractTokenFromRequest","TokenController","refreshTokenIssuer","accessTokenIssuer","tokenVerifier","tokenRevoker","identityResolver","identityPermissionProvider","metrics","clientAuthenticator","certificateSource","logger","tokenGrants","ctx","oauth2ClientAuthenticator","AUTHORIZATION_CODE","codeVerifier","openIdTokenIssuer","keyStore","sessionManager","realmRepository","accessPolicyEvaluator","CLIENT_CREDENTIALS","PASSWORD","authenticator","userAuthenticator","eventService","loginThrottleService","userAuthenticatorService","mfaLoginService","REFRESH_TOKEN","tokenRepository","sessionTokenRepository","options","gracePeriod","tokenRefreshGracePeriod","getIntrospect","event","postIntrospect","assertIntrospectionAuthorized","token","payload","verify","ignoreExpiry","skipActiveCheck","kind","LOGOUT","active","isIntrospectionAllowed","sub","sub_kind","identityInvalid","jti","exp","isInactive","Date","now","subject","subKind","clientId","client_id","realmId","realm_id","claims","permissions","e","clientSecret","body","certificateEvidence","client","authenticate","authMethod","NONE","invalid","GLOBAL","type","CLIENT","data","identity","id","actor","permissionEvaluator","evaluate","name","TOKEN_INTROSPECT","REALM_MATCH","info","revokeToken","revoke","response","status","createToken","grantType","unsupported","grant","runWithRequest","recordTokenGrant"],"sources":["../../../../../../src/adapters/http/controllers/workflows/token/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type {\n OAuth2TokenGrantResponse,\n OAuth2TokenIntrospectionResponse,\n OAuth2TokenPayload,\n} from '@authup/specs';\nimport {\n OAuth2ClientError,\n OAuth2GrantTypeError,\n OAuth2RequestError,\n OAuth2TokenGrant,\n OAuth2TokenKind,\n isJWTError,\n} from '@authup/specs';\nimport { \n ClientAuthMethod, \n IdentityType, \n PermissionName, \n ScopeName, \n} from '@authup/core-kit';\nimport { BuiltInPolicyType, PolicyData } from '@authup/access';\nimport { readRequestBody } from '@routup/basic/body';\nimport {\n DContext,\n DController,\n DGet,\n DPost,\n DTags,\n} from '@routup/decorators';\nimport type { IAppEvent } from 'routup';\nimport type { Logger } from '@authup/server-kit';\nimport { toOAuth2Error } from '../../../../../core/oauth2/helpers/index.ts';\nimport type { TokenControllerContext } from './types.ts';\nimport type {\n IAuthFlowMetrics,\n IIdentityPermissionProvider,\n IIdentityResolver,\n IOAuth2TokenIssuer,\n IOAuth2TokenRevoker,\n IOAuth2TokenVerifier,\n OAuth2ClientAuthenticator,\n} from '../../../../../core/index.ts';\nimport { resolveIntrospectionSubject } from '../../../../../core/index.ts';\nimport type { IHTTPOAuth2Grant } from '../../../adapters/index.ts';\nimport {\n HTTPClientCredentialsGrant,\n HTTPOAuth2AuthorizeGrant,\n HTTPOAuth2RefreshTokenGrant,\n HTTPPasswordGrant,\n extractClientCredentialsFromRequest,\n extractOAuth2ClientCertificateEvidence,\n guessOauth2GrantTypeByRequest,\n readRealmHint,\n} from '../../../adapters/index.ts';\nimport type { CertificateSource } from '../../../request/index.ts';\nimport {\n buildActorContext,\n setRequestIdentity,\n setRequestScopes,\n useRequestIdentity,\n useRequestIdentityOrFail,\n} from '../../../request/index.ts';\nimport { extractTokenFromRequest } from './utils/index.ts';\n\n@DTags('auth')\n@DController('/token')\nexport class TokenController {\n protected refreshTokenIssuer: IOAuth2TokenIssuer;\n\n protected accessTokenIssuer: IOAuth2TokenIssuer;\n\n protected tokenVerifier: IOAuth2TokenVerifier;\n\n protected tokenRevoker: IOAuth2TokenRevoker;\n\n protected identityResolver : IIdentityResolver;\n\n protected identityPermissionProvider : IIdentityPermissionProvider;\n\n protected metrics? : IAuthFlowMetrics;\n\n protected clientAuthenticator : OAuth2ClientAuthenticator;\n\n protected certificateSource : CertificateSource;\n\n protected logger? : Logger;\n\n protected tokenGrants : Record<`${OAuth2TokenGrant}`, IHTTPOAuth2Grant>;\n\n // -------------------------------------------\n\n constructor(ctx: TokenControllerContext) {\n this.refreshTokenIssuer = ctx.refreshTokenIssuer;\n this.accessTokenIssuer = ctx.accessTokenIssuer;\n this.tokenVerifier = ctx.tokenVerifier;\n this.tokenRevoker = ctx.tokenRevoker;\n this.identityResolver = ctx.identityResolver;\n this.identityPermissionProvider = ctx.identityPermissionProvider;\n this.metrics = ctx.metrics;\n this.clientAuthenticator = ctx.oauth2ClientAuthenticator;\n this.certificateSource = ctx.certificateSource;\n this.logger = ctx.logger;\n\n this.tokenGrants = {\n [OAuth2TokenGrant.AUTHORIZATION_CODE]: new HTTPOAuth2AuthorizeGrant({\n codeVerifier: ctx.codeVerifier,\n clientAuthenticator: ctx.oauth2ClientAuthenticator,\n accessTokenIssuer: ctx.accessTokenIssuer,\n refreshTokenIssuer: ctx.refreshTokenIssuer,\n openIdTokenIssuer: ctx.openIdTokenIssuer,\n keyStore: ctx.keyStore,\n sessionManager: ctx.sessionManager,\n realmRepository: ctx.realmRepository,\n accessPolicyEvaluator: ctx.accessPolicyEvaluator,\n certificateSource: ctx.certificateSource,\n }),\n [OAuth2TokenGrant.CLIENT_CREDENTIALS]: new HTTPClientCredentialsGrant({\n accessTokenIssuer: ctx.accessTokenIssuer,\n clientAuthenticator: ctx.oauth2ClientAuthenticator,\n sessionManager: ctx.sessionManager,\n certificateSource: ctx.certificateSource,\n }),\n [OAuth2TokenGrant.PASSWORD]: new HTTPPasswordGrant({\n accessTokenIssuer: ctx.accessTokenIssuer,\n refreshTokenIssuer: ctx.refreshTokenIssuer,\n authenticator: ctx.userAuthenticator,\n clientAuthenticator: ctx.oauth2ClientAuthenticator,\n sessionManager: ctx.sessionManager,\n realmRepository: ctx.realmRepository,\n eventService: ctx.eventService,\n metrics: ctx.metrics,\n loginThrottleService: ctx.loginThrottleService,\n userAuthenticatorService: ctx.userAuthenticatorService,\n mfaLoginService: ctx.mfaLoginService,\n logger: ctx.logger,\n certificateSource: ctx.certificateSource,\n }),\n [OAuth2TokenGrant.REFRESH_TOKEN]: new HTTPOAuth2RefreshTokenGrant({\n accessTokenIssuer: ctx.accessTokenIssuer,\n refreshTokenIssuer: ctx.refreshTokenIssuer,\n tokenVerifier: ctx.tokenVerifier,\n tokenRepository: ctx.tokenRepository,\n sessionTokenRepository: ctx.sessionTokenRepository,\n sessionManager: ctx.sessionManager,\n clientAuthenticator: ctx.oauth2ClientAuthenticator,\n realmRepository: ctx.realmRepository,\n eventService: ctx.eventService,\n metrics: ctx.metrics,\n logger: ctx.logger,\n options: { gracePeriod: ctx.tokenRefreshGracePeriod },\n certificateSource: ctx.certificateSource,\n }),\n };\n }\n\n // -------------------------------------------\n\n @DGet('/introspect', [])\n async getIntrospect(@DContext() event: IAppEvent): Promise<OAuth2TokenIntrospectionResponse> {\n return this.postIntrospect(event);\n }\n\n @DPost('/introspect', [])\n async postIntrospect(\n @DContext() event: IAppEvent,\n ): Promise<OAuth2TokenIntrospectionResponse> {\n await this.assertIntrospectionAuthorized(event);\n\n try {\n const token = await extractTokenFromRequest(event);\n\n // `ignoreExpiry`, so an expired token still reports WHOSE it was:\n // a third-party app can say \"your session ended, <name>\" instead\n // of only \"no\". Everything the caller could act on - the subject,\n // its claims - is in a token we did issue and can still read.\n //\n // `active` is derived below and NEVER from this call. The\n // signature-keyed cache returns a hit without re-checking `exp`\n // (verifier/module.ts), so relying on the verify to reject an\n // expired token would report one as active for as long as its\n // entry survives. The verifier deliberately skips WRITING the\n // cache on this path, so no expired payload can enter it here.\n const payload = await this.tokenVerifier.verify(token, {\n ignoreExpiry: true,\n skipActiveCheck: true,\n });\n\n if (payload.kind === OAuth2TokenKind.LOGOUT) {\n // A back-channel logout token verifies (it is signed with the\n // realm key) but is a notification, never a credential: no\n // endpoint accepts it as a bearer, so it is reported dead\n // rather than raised (RFC 7662 §2.2), bare like any other.\n return { active: false };\n }\n\n if (!await this.isIntrospectionAllowed(event, payload)) {\n // RFC 7662 §2.2's third clause: a caller \"not allowed to\n // introspect\" the token is answered like a dead one,\n // indistinguishable and bare.\n return { active: false };\n }\n\n if (!payload.sub || !payload.sub_kind) {\n // Not a report about a token this server ever issued: authup\n // mints every one with a subject, so a verifying token without\n // one was never valid. `active: false` would claim we knew it\n // and let it lapse.\n throw OAuth2RequestError.identityInvalid();\n }\n\n // Both halves, fail-closed on a missing claim: a token carrying no\n // `jti` cannot be checked against the revocation list, and one\n // carrying no `exp` cannot be shown to be current. Authup mints\n // every token with both. Derived BEFORE the permission read so a\n // dead token never pays for one.\n let active : boolean;\n if (payload.jti && typeof payload.exp === 'number') {\n const isInactive = await this.tokenVerifier.isInactive(payload.jti);\n active = !isInactive && payload.exp * 1000 > Date.now();\n } else {\n active = false;\n }\n\n // An inactive token reports WHO it belonged to and nothing about\n // what they may do (RFC 7662 §2.2 / §4): naming the subject is the\n // point of reading an expired token at all, handing over their\n // authorization set is not. It also skips resolving that set for\n // a token nobody can use - which is why `active` is passed in\n // rather than the permissions being dropped afterwards.\n const subject = await resolveIntrospectionSubject({\n identityResolver: this.identityResolver,\n identityPermissionProvider: this.identityPermissionProvider,\n }, {\n sub: payload.sub,\n subKind: payload.sub_kind,\n clientId: payload.client_id,\n realmId: payload.realm_id,\n active,\n });\n\n if (!active) {\n return {\n active,\n ...payload,\n ...subject.claims,\n };\n }\n\n return {\n active,\n // todo: permissions property should be removed.\n permissions: subject.permissions,\n ...payload,\n ...subject.claims,\n };\n } catch (e) {\n // RFC 7662 §2.2: a token that \"is not active, does not exist on\n // this server, or the protected resource is not allowed to\n // introspect\" MUST be answered with `active: false`. A token this\n // server cannot read does not exist on it, so it is reported like\n // any other rather than raised - which is what §2.2 asks for and\n // what keeps this endpoint from telling a caller whether a string\n // was signed by a key we hold.\n //\n // The report is BARE, no payload: §2.2 and §4 both say not to\n // disclose more about an inactive token, and there is nothing to\n // disclose here anyway. The expired case is the deliberate\n // exception, and it never reaches this catch - it is verified\n // above and reported with its claims.\n if (isJWTError(e)) {\n return { active: false };\n }\n\n throw toOAuth2Error(e);\n }\n }\n\n /**\n * RFC 7662 §2.1: the endpoint MUST require authorization, \"such as client\n * authentication [...] or a separate OAuth 2.0 access token\". The\n * credential has to be INDEPENDENT of the token being introspected, since\n * possession of that string is exactly what a finder has too (#3489): a\n * request identity the authorization middleware resolved (the kit's own\n * live bearer, a resource server's client-credentials bearer, Basic), or\n * confidential client credentials as the grants read them. A bare public\n * `client_id` identifies and authenticates nothing, so it is refused like\n * the client-credentials grant refuses it.\n *\n * An expired bearer never reaches this point: the middleware answers 401\n * before the route runs. So the expired report in `postIntrospect` is only\n * ever handed to a caller that proved who it is, which is what makes it\n * safe to give.\n */\n protected async assertIntrospectionAuthorized(event: IAppEvent) : Promise<void> {\n if (useRequestIdentity(event)) {\n return;\n }\n\n const { clientId, clientSecret } = await extractClientCredentialsFromRequest(event);\n if (!clientId) {\n useRequestIdentityOrFail(event);\n return;\n }\n\n const body = await readRequestBody(event);\n const certificateEvidence = await extractOAuth2ClientCertificateEvidence(event, this.certificateSource);\n const client = await this.clientAuthenticator.authenticate(\n clientId,\n clientSecret,\n readRealmHint(body),\n certificateEvidence,\n );\n if (client.authMethod === ClientAuthMethod.NONE) {\n throw OAuth2ClientError.invalid();\n }\n\n // the authorization layer below reads the request identity, so the\n // credential-authenticated client becomes one, exactly as the\n // middleware's `clientAuthBasic` branch would have set it.\n setRequestScopes(event, [ScopeName.GLOBAL]);\n setRequestIdentity(event, {\n type: IdentityType.CLIENT,\n data: client,\n });\n }\n\n /**\n * WHOSE tokens the authenticated caller may introspect (#3489, second\n * layer): its own subject's, those issued for its own client, or any its\n * TOKEN_INTROSPECT grant reaches (the grant's realm scope is matched\n * against the token's realm claim, so an `admin` reaches everything and\n * a `realm_admin` its own realm). A resource server verifying foreign\n * tokens through the server adapters' remote mode needs that grant. The\n * deny is reported per RFC 7662 §2.2 as a bare `active: false`, which\n * gives the caller nothing to diagnose with, hence the log line.\n */\n protected async isIntrospectionAllowed(\n event: IAppEvent,\n payload: OAuth2TokenPayload,\n ) : Promise<boolean> {\n const identity = useRequestIdentity(event);\n if (!identity) {\n return false;\n }\n\n if (\n payload.sub &&\n identity.type === payload.sub_kind &&\n identity.id === payload.sub\n ) {\n return true;\n }\n\n if (\n identity.type === IdentityType.CLIENT &&\n payload.client_id &&\n identity.id === payload.client_id\n ) {\n return true;\n }\n\n const actor = buildActorContext(event);\n try {\n await actor.permissionEvaluator.evaluate({\n name: PermissionName.TOKEN_INTROSPECT,\n data: new PolicyData({ ...(payload.realm_id ? { [BuiltInPolicyType.REALM_MATCH]: payload.realm_id } : {}) }),\n });\n return true;\n } catch {\n this.logger?.info(\n `introspection denied: ${identity.type} ${identity.id} may not introspect the presented token`,\n );\n return false;\n }\n }\n\n // ----------------------------------------------------------\n\n /**\n * Deliberately ungated, unlike introspection (#3489). RFC 7009 §2.1 asks\n * the client to send its credentials (a bare `client_id` for a public\n * client) and the server to verify the token was issued to that client;\n * authup knowingly skips both. A public `client_id` identifies and\n * proves nothing, so an ownership check built on it would be advisory,\n * the consoles are public clients whose kit revokes anonymously on\n * logout teardown, revoking a token one possesses is the benign action,\n * and the uniform 200 below leaves a scanner nothing to learn.\n */\n @DPost('/revoke', [])\n async revokeToken(\n @DContext() event: IAppEvent,\n ): Promise<null> {\n try {\n const token = await extractTokenFromRequest(event);\n\n // RFC 7009 §2.2: revoking an invalid token — here one that is expired\n // or already inactive — MUST still succeed. The client cannot act on\n // an error, and the token's invalidation (the point of the request)\n // is already achieved. Signature + kind still anchor the token, so a\n // forged/garbage token is rejected; `ignoreExpiry` additionally keeps\n // this exp-bypass out of the shared claims cache (see\n // OAuth2TokenVerifier). Without this, revoking a stale refresh token\n // threw `expired_token`, so the caller's revoke-then-clear-cookie\n // flow aborted, the durable row was never soft-revoked, and the stale\n // refresh cookie survived into the next login.\n const payload = await this.tokenVerifier.verify(token, {\n ignoreExpiry: true,\n skipActiveCheck: true,\n });\n\n await this.tokenRevoker.revoke(payload);\n\n // RFC 7009 §2.2 names 200 for a successful revocation. This was a\n // 202 - within the 2xx family, so a client reading the class was\n // unaffected, but not the status the spec asks for.\n event.response.status = 200;\n return null;\n } catch (e) {\n // Same clause, the other half: \"invalid tokens do not cause an\n // error response since the client cannot handle such an error in a\n // reasonable way\". Expiry is already bypassed above, so this covers\n // a malformed or unverifiable token, which answered 401/404. The\n // answer is the one a valid token gets - the point is that the two\n // are indistinguishable.\n if (isJWTError(e)) {\n event.response.status = 200;\n return null;\n }\n\n throw toOAuth2Error(e);\n }\n }\n\n // ----------------------------------------------------------\n\n @DPost('', [])\n async createToken(@DContext() event: IAppEvent): Promise<OAuth2TokenGrantResponse> {\n const grantType = await guessOauth2GrantTypeByRequest(event);\n if (!grantType) {\n throw OAuth2GrantTypeError.unsupported();\n }\n\n const grant = this.tokenGrants[grantType];\n if (!grant) {\n throw OAuth2GrantTypeError.unsupported();\n }\n\n const response = await grant.runWithRequest(event);\n\n this.metrics?.recordTokenGrant(grantType);\n\n return response;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/http/cookie/index.ts"],"names":[],"mappings":"AAOA,cAAc,cAAc,CAAC"}
|