@authup/server-core 1.0.0-beta.51 → 1.0.0-beta.52
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.map +1 -1
- package/dist/adapters/database/data-source/options/module.mjs +2 -0
- package/dist/adapters/database/data-source/options/module.mjs.map +1 -1
- package/dist/adapters/database/domains/client/entity.d.ts +1 -0
- package/dist/adapters/database/domains/client/entity.d.ts.map +1 -1
- package/dist/adapters/database/domains/client/entity.mjs +5 -0
- package/dist/adapters/database/domains/client/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/index.d.ts +1 -0
- package/dist/adapters/database/domains/index.d.ts.map +1 -1
- package/dist/adapters/database/domains/index.mjs +3 -1
- package/dist/adapters/database/domains/session/entity.mjs +1 -1
- package/dist/adapters/database/domains/session/entity.mjs.map +1 -1
- package/dist/adapters/database/domains/session-token/entity.d.ts +17 -0
- package/dist/adapters/database/domains/session-token/entity.d.ts.map +1 -0
- package/dist/adapters/database/domains/session-token/entity.mjs +95 -0
- package/dist/adapters/database/domains/session-token/entity.mjs.map +1 -0
- package/dist/adapters/database/domains/session-token/index.d.ts +2 -0
- package/dist/adapters/database/domains/session-token/index.d.ts.map +1 -0
- package/dist/adapters/database/domains/session-token/index.mjs +5 -0
- package/dist/adapters/database/index.mjs +2 -1
- package/dist/adapters/database/migrations/mysql/1783325495597-Default.d.ts +28 -0
- package/dist/adapters/database/migrations/mysql/1783325495597-Default.d.ts.map +1 -0
- package/dist/adapters/database/migrations/mysql/1783325495597-Default.mjs +85 -0
- package/dist/adapters/database/migrations/mysql/1783325495597-Default.mjs.map +1 -0
- package/dist/adapters/database/migrations/postgres/1783325495597-Default.d.ts +28 -0
- package/dist/adapters/database/migrations/postgres/1783325495597-Default.d.ts.map +1 -0
- package/dist/adapters/database/migrations/postgres/1783325495597-Default.mjs +79 -0
- package/dist/adapters/database/migrations/postgres/1783325495597-Default.mjs.map +1 -0
- package/dist/adapters/database/subscriber/module.d.ts.map +1 -1
- package/dist/adapters/database/subscriber/module.mjs +4 -3
- package/dist/adapters/database/subscriber/module.mjs.map +1 -1
- package/dist/adapters/http/adapters/index.mjs +2 -1
- package/dist/adapters/http/adapters/oauth2/authorization/module.mjs +2 -1
- package/dist/adapters/http/adapters/oauth2/authorization/module.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts +2 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs +10 -4
- package/dist/adapters/http/adapters/oauth2/grant-types/authorize.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs +3 -0
- package/dist/adapters/http/adapters/oauth2/grant-types/client-credentials.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/index.mjs +2 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/password.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs +5 -3
- package/dist/adapters/http/adapters/oauth2/grant-types/password.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.d.ts +2 -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 +12 -5
- package/dist/adapters/http/adapters/oauth2/grant-types/refresh_token.mjs.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts +2 -0
- package/dist/adapters/http/adapters/oauth2/grant-types/types.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/credentials.mjs +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/guess.mjs +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/index.d.ts +1 -0
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/index.d.ts.map +1 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/index.mjs +2 -1
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/realm.d.ts +9 -0
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/realm.d.ts.map +1 -0
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/realm.mjs +21 -0
- package/dist/adapters/http/adapters/oauth2/grant-types/utils/realm.mjs.map +1 -0
- package/dist/adapters/http/adapters/oauth2/index.mjs +2 -1
- package/dist/adapters/http/controllers/entities/client/module.mjs +2 -2
- package/dist/adapters/http/controllers/entities/client-permission/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/client-role/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/client-scope/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/identity-provide-role/module.mjs +1 -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 +4 -3
- package/dist/adapters/http/controllers/entities/identity-provider/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/index.d.ts +1 -0
- package/dist/adapters/http/controllers/entities/index.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/index.mjs +3 -1
- package/dist/adapters/http/controllers/entities/permission/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/permission-policy/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/policy/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/realm/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/entities/realm/module.mjs +11 -8
- package/dist/adapters/http/controllers/entities/realm/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/entities/robot/module.mjs +2 -2
- package/dist/adapters/http/controllers/entities/robot-permission/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/robot-role/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/role/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/role-attribute/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/role-permission/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/scope/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/session/index.d.ts +2 -0
- package/dist/adapters/http/controllers/entities/session/index.d.ts.map +1 -0
- package/dist/adapters/http/controllers/entities/session/index.mjs +5 -0
- package/dist/adapters/http/controllers/entities/session/module.d.ts +16 -0
- package/dist/adapters/http/controllers/entities/session/module.d.ts.map +1 -0
- package/dist/adapters/http/controllers/entities/session/module.mjs +102 -0
- package/dist/adapters/http/controllers/entities/session/module.mjs.map +1 -0
- package/dist/adapters/http/controllers/entities/user/module.mjs +2 -2
- package/dist/adapters/http/controllers/entities/user-attribute/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/user-permission/module.mjs +1 -1
- package/dist/adapters/http/controllers/entities/user-role/module.mjs +1 -1
- package/dist/adapters/http/controllers/index.mjs +3 -1
- package/dist/adapters/http/controllers/workflows/authorize/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/authorize/module.mjs +22 -9
- package/dist/adapters/http/controllers/workflows/authorize/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/authorize/types.d.ts +7 -4
- package/dist/adapters/http/controllers/workflows/authorize/types.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/index.d.ts +1 -0
- package/dist/adapters/http/controllers/workflows/index.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/index.mjs +3 -1
- package/dist/adapters/http/controllers/workflows/logout/index.d.ts +3 -0
- package/dist/adapters/http/controllers/workflows/logout/index.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/logout/index.mjs +5 -0
- package/dist/adapters/http/controllers/workflows/logout/module.d.ts +14 -0
- package/dist/adapters/http/controllers/workflows/logout/module.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/logout/module.mjs +101 -0
- package/dist/adapters/http/controllers/workflows/logout/module.mjs.map +1 -0
- package/dist/adapters/http/controllers/workflows/logout/types.d.ts +9 -0
- package/dist/adapters/http/controllers/workflows/logout/types.d.ts.map +1 -0
- package/dist/adapters/http/controllers/workflows/logout/types.mjs +4 -0
- package/dist/adapters/http/controllers/workflows/status/module.mjs +1 -1
- package/dist/adapters/http/controllers/workflows/token/module.d.ts.map +1 -1
- package/dist/adapters/http/controllers/workflows/token/module.mjs +10 -3
- package/dist/adapters/http/controllers/workflows/token/module.mjs.map +1 -1
- package/dist/adapters/http/controllers/workflows/token/types.d.ts +8 -1
- package/dist/adapters/http/controllers/workflows/token/types.d.ts.map +1 -1
- package/dist/adapters/http/index.mjs +16 -12
- package/dist/adapters/http/middleware/built-in/authorization/module.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/authorization/module.mjs +2 -0
- package/dist/adapters/http/middleware/built-in/authorization/module.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/index.mjs +2 -2
- package/dist/adapters/http/middleware/built-in/logger.d.ts +1 -0
- package/dist/adapters/http/middleware/built-in/logger.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/logger.mjs +23 -2
- package/dist/adapters/http/middleware/built-in/logger.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/prometheus.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/prometheus.mjs +1 -1
- package/dist/adapters/http/middleware/built-in/prometheus.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/realm-resolver/module.d.ts.map +1 -1
- package/dist/adapters/http/middleware/built-in/realm-resolver/module.mjs +3 -8
- package/dist/adapters/http/middleware/built-in/realm-resolver/module.mjs.map +1 -1
- package/dist/adapters/http/middleware/built-in/ui-http-client.d.ts +2 -2
- package/dist/adapters/http/middleware/built-in/ui-http-client.mjs +2 -2
- package/dist/adapters/http/middleware/built-in/ui-http-client.mjs.map +1 -1
- package/dist/adapters/http/middleware/index.mjs +2 -2
- package/dist/adapters/http/request/helpers/index.d.ts +1 -0
- package/dist/adapters/http/request/helpers/index.d.ts.map +1 -1
- package/dist/adapters/http/request/helpers/index.mjs +2 -1
- package/dist/adapters/http/request/helpers/session-id.d.ts +9 -0
- package/dist/adapters/http/request/helpers/session-id.d.ts.map +1 -0
- package/dist/adapters/http/request/helpers/session-id.mjs +19 -0
- package/dist/adapters/http/request/helpers/session-id.mjs.map +1 -0
- package/dist/adapters/http/request/index.mjs +2 -1
- package/dist/adapters/http/request/permission/module.d.ts.map +1 -1
- package/dist/adapters/http/request/permission/module.mjs +4 -2
- package/dist/adapters/http/request/permission/module.mjs.map +1 -1
- package/dist/adapters/http/ui/index.d.ts +1 -0
- package/dist/adapters/http/ui/index.d.ts.map +1 -1
- package/dist/adapters/http/ui/index.mjs +2 -1
- package/dist/adapters/http/ui/internal-http-client.d.ts +22 -0
- package/dist/adapters/http/ui/internal-http-client.d.ts.map +1 -0
- package/dist/adapters/http/ui/internal-http-client.mjs +52 -0
- package/dist/adapters/http/ui/internal-http-client.mjs.map +1 -0
- package/dist/adapters/http/ui/render.d.ts.map +1 -1
- package/dist/adapters/http/ui/render.mjs +5 -2
- package/dist/adapters/http/ui/render.mjs.map +1 -1
- package/dist/adapters/http/ui/types.d.ts +12 -0
- package/dist/adapters/http/ui/types.d.ts.map +1 -1
- package/dist/app/modules/authentication/repositories/session.d.ts +5 -2
- package/dist/app/modules/authentication/repositories/session.d.ts.map +1 -1
- package/dist/app/modules/authentication/repositories/session.mjs +63 -0
- package/dist/app/modules/authentication/repositories/session.mjs.map +1 -1
- package/dist/app/modules/config/constants.d.ts +4 -0
- package/dist/app/modules/config/constants.d.ts.map +1 -1
- package/dist/app/modules/config/constants.mjs +4 -0
- package/dist/app/modules/config/constants.mjs.map +1 -1
- package/dist/app/modules/config/normalize.d.ts.map +1 -1
- package/dist/app/modules/config/normalize.mjs +6 -1
- package/dist/app/modules/config/normalize.mjs.map +1 -1
- package/dist/app/modules/config/read/env.d.ts.map +1 -1
- package/dist/app/modules/config/read/env.mjs +8 -0
- package/dist/app/modules/config/read/env.mjs.map +1 -1
- package/dist/app/modules/config/types.d.ts +31 -2
- 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 +5 -0
- package/dist/app/modules/config/validator.mjs.map +1 -1
- package/dist/app/modules/database/module.d.ts +1 -0
- package/dist/app/modules/database/module.d.ts.map +1 -1
- package/dist/app/modules/database/module.mjs +19 -6
- package/dist/app/modules/database/module.mjs.map +1 -1
- package/dist/app/modules/database/repositories/client/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/client/repository.mjs +10 -6
- package/dist/app/modules/database/repositories/client/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/helpers.d.ts +11 -0
- package/dist/app/modules/database/repositories/helpers.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/helpers.mjs +12 -1
- package/dist/app/modules/database/repositories/helpers.mjs.map +1 -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 +8 -8
- package/dist/app/modules/database/repositories/identity-provider/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/permission/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/permission/repository.mjs +4 -3
- package/dist/app/modules/database/repositories/permission/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/policy/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/policy/repository.mjs +4 -3
- package/dist/app/modules/database/repositories/policy/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/realm/repository.d.ts +1 -0
- package/dist/app/modules/database/repositories/realm/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/realm/repository.mjs +14 -1
- package/dist/app/modules/database/repositories/realm/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/robot/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/robot/repository.mjs +8 -6
- package/dist/app/modules/database/repositories/robot/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/role/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/role/repository.mjs +4 -3
- package/dist/app/modules/database/repositories/role/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/role-attribute/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/role-attribute/repository.mjs +2 -1
- package/dist/app/modules/database/repositories/role-attribute/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/scope/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/scope/repository.mjs +4 -3
- package/dist/app/modules/database/repositories/scope/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/user/repository.mjs +8 -5
- package/dist/app/modules/database/repositories/user/repository.mjs.map +1 -1
- package/dist/app/modules/database/repositories/user-attribute/repository.d.ts.map +1 -1
- package/dist/app/modules/database/repositories/user-attribute/repository.mjs +2 -1
- package/dist/app/modules/database/repositories/user-attribute/repository.mjs.map +1 -1
- package/dist/app/modules/http/constants.d.ts +4 -2
- package/dist/app/modules/http/constants.d.ts.map +1 -1
- package/dist/app/modules/http/constants.mjs +4 -2
- package/dist/app/modules/http/constants.mjs.map +1 -1
- package/dist/app/modules/http/module.d.ts +10 -0
- package/dist/app/modules/http/module.d.ts.map +1 -1
- package/dist/app/modules/http/module.mjs +30 -0
- package/dist/app/modules/http/module.mjs.map +1 -1
- package/dist/app/modules/http/modules/controller.d.ts +4 -2
- package/dist/app/modules/http/modules/controller.d.ts.map +1 -1
- package/dist/app/modules/http/modules/controller.mjs +57 -15
- package/dist/app/modules/http/modules/controller.mjs.map +1 -1
- package/dist/app/modules/http/modules/middleware.mjs +1 -1
- package/dist/app/modules/oauth2/constants.d.ts +2 -1
- package/dist/app/modules/oauth2/constants.d.ts.map +1 -1
- package/dist/app/modules/oauth2/constants.mjs +1 -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 +10 -4
- package/dist/app/modules/oauth2/module.mjs.map +1 -1
- package/dist/app/modules/oauth2/repositories/index.d.ts +1 -0
- package/dist/app/modules/oauth2/repositories/index.d.ts.map +1 -1
- package/dist/app/modules/oauth2/repositories/index.mjs +3 -1
- package/dist/app/modules/oauth2/repositories/session-token/index.d.ts +2 -0
- package/dist/app/modules/oauth2/repositories/session-token/index.d.ts.map +1 -0
- package/dist/app/modules/oauth2/repositories/session-token/index.mjs +5 -0
- package/dist/app/modules/oauth2/repositories/session-token/repository.d.ts +17 -0
- package/dist/app/modules/oauth2/repositories/session-token/repository.d.ts.map +1 -0
- package/dist/app/modules/oauth2/repositories/session-token/repository.mjs +63 -0
- package/dist/app/modules/oauth2/repositories/session-token/repository.mjs.map +1 -0
- package/dist/app/modules/provisioning/sources/default/module.d.ts.map +1 -1
- package/dist/app/modules/provisioning/sources/default/module.mjs +1 -0
- package/dist/app/modules/provisioning/sources/default/module.mjs.map +1 -1
- package/dist/app/modules/provisioning/sources/file/module.d.ts.map +1 -1
- package/dist/app/modules/provisioning/sources/file/module.mjs +2 -1
- package/dist/app/modules/provisioning/sources/file/module.mjs.map +1 -1
- package/dist/cli/commands/migration.d.ts.map +1 -1
- package/dist/cli/commands/migration.mjs +12 -4
- package/dist/cli/commands/migration.mjs.map +1 -1
- package/dist/components/oauth2-cleaner/module.d.ts.map +1 -1
- package/dist/components/oauth2-cleaner/module.mjs +3 -0
- package/dist/components/oauth2-cleaner/module.mjs.map +1 -1
- package/dist/core/authentication/index.mjs +2 -1
- package/dist/core/authentication/session/index.mjs +2 -1
- package/dist/core/authentication/session/module.d.ts +1 -0
- package/dist/core/authentication/session/module.d.ts.map +1 -1
- package/dist/core/authentication/session/module.mjs +3 -0
- package/dist/core/authentication/session/module.mjs.map +1 -1
- package/dist/core/authentication/session/types.d.ts +34 -0
- package/dist/core/authentication/session/types.d.ts.map +1 -1
- package/dist/core/authentication/session/types.mjs +18 -1
- package/dist/core/authentication/session/types.mjs.map +1 -0
- package/dist/core/entities/client/web-client.d.ts +5 -3
- package/dist/core/entities/client/web-client.d.ts.map +1 -1
- package/dist/core/entities/client/web-client.mjs +8 -4
- package/dist/core/entities/client/web-client.mjs.map +1 -1
- package/dist/core/entities/index.d.ts +1 -0
- package/dist/core/entities/index.d.ts.map +1 -1
- package/dist/core/entities/index.mjs +3 -1
- package/dist/core/entities/realm/types.d.ts +9 -0
- package/dist/core/entities/realm/types.d.ts.map +1 -1
- package/dist/core/entities/session/index.d.ts +3 -0
- package/dist/core/entities/session/index.d.ts.map +1 -0
- package/dist/core/entities/session/index.mjs +5 -0
- package/dist/core/entities/session/service.d.ts +27 -0
- package/dist/core/entities/session/service.d.ts.map +1 -0
- package/dist/core/entities/session/service.mjs +151 -0
- package/dist/core/entities/session/service.mjs.map +1 -0
- package/dist/core/entities/session/types.d.ts +48 -0
- package/dist/core/entities/session/types.d.ts.map +1 -0
- package/dist/core/entities/session/types.mjs +4 -0
- package/dist/core/entities/user/service.d.ts +1 -0
- package/dist/core/entities/user/service.d.ts.map +1 -1
- package/dist/core/entities/user/service.mjs +1 -1
- package/dist/core/entities/user/service.mjs.map +1 -1
- package/dist/core/identity/password-recovery/service.d.ts.map +1 -1
- package/dist/core/identity/password-recovery/service.mjs +2 -1
- package/dist/core/identity/password-recovery/service.mjs.map +1 -1
- package/dist/core/identity/password-recovery/types.d.ts +1 -0
- package/dist/core/identity/password-recovery/types.d.ts.map +1 -1
- package/dist/core/identity/permission/checker/service.d.ts.map +1 -1
- package/dist/core/identity/permission/checker/service.mjs +6 -5
- package/dist/core/identity/permission/checker/service.mjs.map +1 -1
- package/dist/core/identity/policy/checker/service.d.ts.map +1 -1
- package/dist/core/identity/policy/checker/service.mjs +6 -5
- package/dist/core/identity/policy/checker/service.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/presets/facebook.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/presets/facebook.mjs +2 -1
- package/dist/core/identity/provider/authentication/presets/facebook.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/presets/github.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/presets/github.mjs +2 -1
- package/dist/core/identity/provider/authentication/presets/github.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/presets/google.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/presets/google.mjs +2 -1
- package/dist/core/identity/provider/authentication/presets/google.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/presets/instagram.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/presets/instagram.mjs +2 -1
- package/dist/core/identity/provider/authentication/presets/instagram.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/presets/paypal.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/presets/paypal.mjs +2 -1
- package/dist/core/identity/provider/authentication/presets/paypal.mjs.map +1 -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 +7 -2
- package/dist/core/identity/provider/authentication/protocols/oauth2/module.mjs.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/open-id/module.d.ts +2 -0
- package/dist/core/identity/provider/authentication/protocols/open-id/module.d.ts.map +1 -1
- package/dist/core/identity/provider/authentication/protocols/open-id/module.mjs +5 -0
- package/dist/core/identity/provider/authentication/protocols/open-id/module.mjs.map +1 -1
- package/dist/core/identity/registration/service.d.ts.map +1 -1
- package/dist/core/identity/registration/service.mjs +9 -6
- package/dist/core/identity/registration/service.mjs.map +1 -1
- package/dist/core/identity/registration/types.d.ts +1 -0
- package/dist/core/identity/registration/types.d.ts.map +1 -1
- package/dist/core/identity/resolver/module.d.ts +7 -0
- package/dist/core/identity/resolver/module.d.ts.map +1 -1
- package/dist/core/identity/resolver/module.mjs +7 -1
- package/dist/core/identity/resolver/module.mjs.map +1 -1
- package/dist/core/index.mjs +10 -2
- package/dist/core/oauth2/authorization/code/index.mjs +1 -0
- package/dist/core/oauth2/authorization/code/issuer/module.d.ts +0 -1
- package/dist/core/oauth2/authorization/code/issuer/module.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/code/issuer/module.mjs +7 -7
- package/dist/core/oauth2/authorization/code/issuer/module.mjs.map +1 -1
- package/dist/core/oauth2/authorization/code/issuer/types.d.ts +11 -2
- package/dist/core/oauth2/authorization/code/issuer/types.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/code/verifier/module.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/code/verifier/module.mjs +1 -0
- package/dist/core/oauth2/authorization/code/verifier/module.mjs.map +1 -1
- package/dist/core/oauth2/authorization/code/verifier/types.d.ts +1 -0
- package/dist/core/oauth2/authorization/code/verifier/types.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/code-request/validator.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/code-request/validator.mjs +19 -5
- package/dist/core/oauth2/authorization/code-request/validator.mjs.map +1 -1
- package/dist/core/oauth2/authorization/code-request/verifier/module.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/code-request/verifier/module.mjs +13 -10
- package/dist/core/oauth2/authorization/code-request/verifier/module.mjs.map +1 -1
- package/dist/core/oauth2/authorization/code-request/verifier/types.d.ts +7 -0
- package/dist/core/oauth2/authorization/code-request/verifier/types.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/helpers.d.ts +2 -1
- package/dist/core/oauth2/authorization/helpers.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/helpers.mjs +19 -2
- package/dist/core/oauth2/authorization/helpers.mjs.map +1 -1
- package/dist/core/oauth2/authorization/module.d.ts +6 -7
- package/dist/core/oauth2/authorization/module.d.ts.map +1 -1
- package/dist/core/oauth2/authorization/module.mjs +24 -38
- package/dist/core/oauth2/authorization/module.mjs.map +1 -1
- package/dist/core/oauth2/authorization/types.d.ts +15 -7
- package/dist/core/oauth2/authorization/types.d.ts.map +1 -1
- package/dist/core/oauth2/client/grant-type.d.ts +9 -0
- package/dist/core/oauth2/client/grant-type.d.ts.map +1 -0
- package/dist/core/oauth2/client/grant-type.mjs +18 -0
- package/dist/core/oauth2/client/grant-type.mjs.map +1 -0
- package/dist/core/oauth2/client/index.d.ts +1 -0
- package/dist/core/oauth2/client/index.d.ts.map +1 -1
- package/dist/core/oauth2/client/index.mjs +2 -1
- package/dist/core/oauth2/end-session/index.d.ts +4 -0
- package/dist/core/oauth2/end-session/index.d.ts.map +1 -0
- package/dist/core/oauth2/end-session/index.mjs +6 -0
- package/dist/core/oauth2/end-session/service.d.ts +30 -0
- package/dist/core/oauth2/end-session/service.d.ts.map +1 -0
- package/dist/core/oauth2/end-session/service.mjs +117 -0
- package/dist/core/oauth2/end-session/service.mjs.map +1 -0
- package/dist/core/oauth2/end-session/types.d.ts +55 -0
- package/dist/core/oauth2/end-session/types.d.ts.map +1 -0
- package/dist/core/oauth2/end-session/types.mjs +4 -0
- package/dist/core/oauth2/end-session/validator.d.ts +6 -0
- package/dist/core/oauth2/end-session/validator.d.ts.map +1 -0
- package/dist/core/oauth2/end-session/validator.mjs +23 -0
- package/dist/core/oauth2/end-session/validator.mjs.map +1 -0
- package/dist/core/oauth2/grant-types/authorize.d.ts +19 -2
- package/dist/core/oauth2/grant-types/authorize.d.ts.map +1 -1
- package/dist/core/oauth2/grant-types/authorize.mjs +53 -10
- package/dist/core/oauth2/grant-types/authorize.mjs.map +1 -1
- package/dist/core/oauth2/grant-types/refresh-token.d.ts +21 -2
- package/dist/core/oauth2/grant-types/refresh-token.d.ts.map +1 -1
- package/dist/core/oauth2/grant-types/refresh-token.mjs +55 -9
- package/dist/core/oauth2/grant-types/refresh-token.mjs.map +1 -1
- package/dist/core/oauth2/grant-types/types.d.ts +22 -2
- package/dist/core/oauth2/grant-types/types.d.ts.map +1 -1
- package/dist/core/oauth2/index.d.ts +2 -0
- package/dist/core/oauth2/index.d.ts.map +1 -1
- package/dist/core/oauth2/index.mjs +7 -3
- package/dist/core/oauth2/session-token/index.d.ts +2 -0
- package/dist/core/oauth2/session-token/index.d.ts.map +1 -0
- package/dist/core/oauth2/session-token/index.mjs +4 -0
- package/dist/core/oauth2/session-token/types.d.ts +70 -0
- package/dist/core/oauth2/session-token/types.d.ts.map +1 -0
- package/dist/core/oauth2/session-token/types.mjs +4 -0
- package/dist/core/oauth2/token/issuer/access/module.d.ts +3 -1
- package/dist/core/oauth2/token/issuer/access/module.d.ts.map +1 -1
- package/dist/core/oauth2/token/issuer/access/module.mjs +12 -1
- package/dist/core/oauth2/token/issuer/access/module.mjs.map +1 -1
- package/dist/core/oauth2/token/issuer/open-id/module.d.ts.map +1 -1
- package/dist/core/oauth2/token/issuer/open-id/module.mjs +1 -1
- package/dist/core/oauth2/token/issuer/open-id/module.mjs.map +1 -1
- package/dist/core/oauth2/token/issuer/refresh/module.d.ts +3 -1
- package/dist/core/oauth2/token/issuer/refresh/module.d.ts.map +1 -1
- package/dist/core/oauth2/token/issuer/refresh/module.mjs +12 -1
- package/dist/core/oauth2/token/issuer/refresh/module.mjs.map +1 -1
- package/dist/core/oauth2/token/revoker/module.d.ts +3 -1
- package/dist/core/oauth2/token/revoker/module.d.ts.map +1 -1
- package/dist/core/oauth2/token/revoker/module.mjs +4 -1
- package/dist/core/oauth2/token/revoker/module.mjs.map +1 -1
- package/dist/core/oauth2/token/verifier/module.d.ts.map +1 -1
- package/dist/core/oauth2/token/verifier/module.mjs +4 -4
- package/dist/core/oauth2/token/verifier/module.mjs.map +1 -1
- package/dist/core/oauth2/token/verifier/types.d.ts +6 -0
- package/dist/core/oauth2/token/verifier/types.d.ts.map +1 -1
- package/dist/core/provisioning/entities/client/relations-validator.d.ts.map +1 -1
- package/dist/core/provisioning/entities/client/relations-validator.mjs +3 -2
- package/dist/core/provisioning/entities/client/relations-validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/index.d.ts +1 -0
- package/dist/core/provisioning/entities/index.d.ts.map +1 -1
- package/dist/core/provisioning/entities/index.mjs +5 -1
- package/dist/core/provisioning/entities/permission/index.d.ts +1 -0
- package/dist/core/provisioning/entities/permission/index.d.ts.map +1 -1
- package/dist/core/provisioning/entities/permission/index.mjs +2 -1
- package/dist/core/provisioning/entities/permission/relations-validator.d.ts +6 -0
- package/dist/core/provisioning/entities/permission/relations-validator.d.ts.map +1 -0
- package/dist/core/provisioning/entities/permission/relations-validator.mjs +17 -0
- package/dist/core/provisioning/entities/permission/relations-validator.mjs.map +1 -0
- package/dist/core/provisioning/entities/permission/validator.d.ts.map +1 -1
- package/dist/core/provisioning/entities/permission/validator.mjs +3 -0
- package/dist/core/provisioning/entities/permission/validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/policy/index.d.ts +1 -0
- package/dist/core/provisioning/entities/policy/index.d.ts.map +1 -1
- package/dist/core/provisioning/entities/policy/index.mjs +2 -1
- package/dist/core/provisioning/entities/policy/validator.d.ts +6 -0
- package/dist/core/provisioning/entities/policy/validator.d.ts.map +1 -0
- package/dist/core/provisioning/entities/policy/validator.mjs +26 -0
- package/dist/core/provisioning/entities/policy/validator.mjs.map +1 -0
- package/dist/core/provisioning/entities/realm/relations-validator.d.ts.map +1 -1
- package/dist/core/provisioning/entities/realm/relations-validator.mjs +9 -52
- package/dist/core/provisioning/entities/realm/relations-validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/role/relations-validator.d.ts.map +1 -1
- package/dist/core/provisioning/entities/role/relations-validator.mjs +4 -0
- package/dist/core/provisioning/entities/role/relations-validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/root/validator.d.ts.map +1 -1
- package/dist/core/provisioning/entities/root/validator.mjs +11 -26
- package/dist/core/provisioning/entities/root/validator.mjs.map +1 -1
- package/dist/core/provisioning/entities/utils.d.ts +10 -0
- package/dist/core/provisioning/entities/utils.d.ts.map +1 -0
- package/dist/core/provisioning/entities/utils.mjs +29 -0
- package/dist/core/provisioning/entities/utils.mjs.map +1 -0
- package/dist/core/provisioning/index.mjs +4 -1
- package/dist/core/provisioning/synchronizer/base.d.ts.map +1 -1
- package/dist/core/provisioning/synchronizer/base.mjs.map +1 -1
- package/dist/index.mjs +16 -11
- package/dist/swagger.json +531 -23
- package/dist/ui/client/.vite/ssr-manifest.json +1140 -114
- package/dist/ui/client/assets/{index-Cd3uWit-.js → index-CP9HCHoS.js} +15 -15
- package/dist/ui/client/assets/index-VM4JXBXw.css +2 -0
- package/dist/ui/client/index.html +2 -2
- package/dist/ui/server/assets/{multipart-parser-Dn2Ly9xU.js → multipart-parser-BCMy8Xwv.js} +11 -1
- package/dist/ui/server/assets/{multipart-parser-DyM9gi59.js → multipart-parser-BVY8pIV2.js} +11 -1
- package/dist/ui/server/server.js +8643 -6992
- package/package.json +15 -15
- package/dist/ui/client/assets/index-DoCTwJ8M.css +0 -2
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import type { ObjectLiteral } from '@authup/kit';
|
|
2
2
|
import type { OAuth2TokenGrantResponse } from '@authup/specs';
|
|
3
|
+
import type { Logger } from '@authup/server-kit';
|
|
3
4
|
import type { ISessionManager } from '../../authentication/index.ts';
|
|
4
|
-
import type {
|
|
5
|
+
import type { IOAuth2KeyRepository } from '../key/index.ts';
|
|
6
|
+
import type { ISessionTokenRepository } from '../session-token/index.ts';
|
|
7
|
+
import type { IOAuth2OpenIDTokenIssuer, IOAuth2TokenIssuer, IOAuth2TokenRepository, IOAuth2TokenVerifier } from '../token/index.ts';
|
|
5
8
|
export type BaseGrantContext = {
|
|
6
9
|
accessTokenIssuer: IOAuth2TokenIssuer;
|
|
7
10
|
sessionManager: ISessionManager;
|
|
8
11
|
};
|
|
9
12
|
export type OAuth2AuthorizeGrantContext = BaseGrantContext & {
|
|
10
13
|
refreshTokenIssuer: IOAuth2TokenIssuer;
|
|
14
|
+
openIdTokenIssuer: IOAuth2OpenIDTokenIssuer;
|
|
15
|
+
/**
|
|
16
|
+
* The realm's signing key determines the id_token's JWS alg — and with it
|
|
17
|
+
* the at_hash digest (OIDC Core §3.1.3.6).
|
|
18
|
+
*/
|
|
19
|
+
keyRepository: IOAuth2KeyRepository;
|
|
11
20
|
};
|
|
12
21
|
export type OAuth2IdentityGrantContext = BaseGrantContext & {
|
|
13
22
|
refreshTokenIssuer: IOAuth2TokenIssuer;
|
|
@@ -15,10 +24,21 @@ export type OAuth2IdentityGrantContext = BaseGrantContext & {
|
|
|
15
24
|
export type OAuth2PasswordGrantContext = BaseGrantContext & {
|
|
16
25
|
refreshTokenIssuer: IOAuth2TokenIssuer;
|
|
17
26
|
};
|
|
27
|
+
export type OAuth2RefreshTokenGrantOptions = {
|
|
28
|
+
/**
|
|
29
|
+
* Grace period (seconds) during which a just-consumed refresh token still
|
|
30
|
+
* mints new chain-linked tokens instead of triggering replay detection.
|
|
31
|
+
* default: 0 (strict).
|
|
32
|
+
*/
|
|
33
|
+
gracePeriod?: number;
|
|
34
|
+
};
|
|
18
35
|
export type OAuth2RefreshTokenGrantContext = BaseGrantContext & {
|
|
19
36
|
refreshTokenIssuer: IOAuth2TokenIssuer;
|
|
20
37
|
tokenVerifier: IOAuth2TokenVerifier;
|
|
21
|
-
|
|
38
|
+
tokenRepository: IOAuth2TokenRepository;
|
|
39
|
+
sessionTokenRepository: ISessionTokenRepository;
|
|
40
|
+
logger?: Logger;
|
|
41
|
+
options?: OAuth2RefreshTokenGrantOptions;
|
|
22
42
|
};
|
|
23
43
|
export type OAuth2GrantRunWIthOptions = {
|
|
24
44
|
userAgent?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/oauth2/grant-types/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/oauth2/grant-types/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EACR,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACvB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,gBAAgB,GAAG;IAC3B,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,cAAc,EAAE,eAAe,CAAA;CAClC,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,gBAAgB,GAAG;IACzD,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C;;;OAGG;IACH,aAAa,EAAE,oBAAoB,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,gBAAgB,GAAG;IACxD,kBAAkB,EAAE,kBAAkB,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,gBAAgB,GAAG;IACxD,kBAAkB,EAAE,kBAAkB,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IACzC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,gBAAgB,GAAG;IAC5D,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,aAAa,EAAE,oBAAoB,CAAC;IACpC,eAAe,EAAE,sBAAsB,CAAC;IACxC,sBAAsB,EAAE,uBAAuB,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,8BAA8B,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,aAAa;IAC3C,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,yBAAyB,GAAI,OAAO,CAAC,wBAAwB,CAAC,CAAC;CAC1F"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export * from './authorization/index.ts';
|
|
2
2
|
export * from './client/index.ts';
|
|
3
|
+
export * from './end-session/index.ts';
|
|
3
4
|
export * from './grant-types/index.ts';
|
|
4
5
|
export * from './key/index.ts';
|
|
5
6
|
export * from './openid/index.ts';
|
|
6
7
|
export * from './response/index.ts';
|
|
7
8
|
export * from './scope/index.ts';
|
|
9
|
+
export * from './session-token/index.ts';
|
|
8
10
|
export * from './token/index.ts';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/oauth2/index.ts"],"names":[],"mappings":"AAOA,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/oauth2/index.ts"],"names":[],"mappings":"AAOA,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC"}
|
|
@@ -4,13 +4,17 @@ import.meta.url;
|
|
|
4
4
|
import { OAuth2AuthorizationCodeIssuer } from "./authorization/code/issuer/module.mjs";
|
|
5
5
|
import { base64URLEncode, buildOAuth2CodeChallenge, buildOAuth2TokenHash, generateOAuth2CodeVerifier } from "./authorization/helpers.mjs";
|
|
6
6
|
import { OAuth2AuthorizationCodeVerifier } from "./authorization/code/verifier/module.mjs";
|
|
7
|
+
import { OAuth2ClientAuthenticator } from "./client/authenticator.mjs";
|
|
8
|
+
import { assertClientGrantAllowed } from "./client/grant-type.mjs";
|
|
9
|
+
import "./client/index.mjs";
|
|
7
10
|
import { OAuth2AuthorizationCodeRequestVerifier } from "./authorization/code-request/verifier/module.mjs";
|
|
8
11
|
import { OAuth2AuthorizationCodeRequestValidator } from "./authorization/code-request/validator.mjs";
|
|
9
12
|
import { OAuth2AuthorizationStateManager } from "./authorization/state/module.mjs";
|
|
10
13
|
import { OAuth2Authorization } from "./authorization/module.mjs";
|
|
11
14
|
import "./authorization/index.mjs";
|
|
12
|
-
import {
|
|
13
|
-
import "./
|
|
15
|
+
import { OAuth2EndSessionService } from "./end-session/service.mjs";
|
|
16
|
+
import { OAuth2EndSessionRequestValidator } from "./end-session/validator.mjs";
|
|
17
|
+
import "./end-session/index.mjs";
|
|
14
18
|
import { buildOAuth2BearerTokenResponse } from "./response/bearer.mjs";
|
|
15
19
|
import { OAuth2AuthorizeGrant } from "./grant-types/authorize.mjs";
|
|
16
20
|
import { ClientCredentialsGrant } from "./grant-types/client-credentials.mjs";
|
|
@@ -30,4 +34,4 @@ import { OAuth2TokenRevoker } from "./token/revoker/module.mjs";
|
|
|
30
34
|
import { OAuth2TokenSigner } from "./token/signer/module.mjs";
|
|
31
35
|
import { OAuth2TokenVerifier } from "./token/verifier/module.mjs";
|
|
32
36
|
import "./token/index.mjs";
|
|
33
|
-
export { ClientCredentialsGrant, IdentityGrantType, OAuth2AccessTokenIssuer, OAuth2Authorization, OAuth2AuthorizationCodeIssuer, OAuth2AuthorizationCodeRequestValidator, OAuth2AuthorizationCodeRequestVerifier, OAuth2AuthorizationCodeVerifier, OAuth2AuthorizationStateManager, OAuth2AuthorizeGrant, OAuth2ClientAuthenticator, OAuth2OpenIDClaimsBuilder, OAuth2OpenIDTokenIssuer, OAuth2RefreshTokenGrant, OAuth2RefreshTokenIssuer, OAuth2ScopeAttributesResolver, OAuth2TokenRevoker, OAuth2TokenSigner, OAuth2TokenVerifier, PasswordGrantType, RobotCredentialsGrant, base64URLEncode, buildOAuth2BearerTokenResponse, buildOAuth2CodeChallenge, buildOAuth2TokenHash, generateOAuth2CodeVerifier };
|
|
37
|
+
export { ClientCredentialsGrant, IdentityGrantType, OAuth2AccessTokenIssuer, OAuth2Authorization, OAuth2AuthorizationCodeIssuer, OAuth2AuthorizationCodeRequestValidator, OAuth2AuthorizationCodeRequestVerifier, OAuth2AuthorizationCodeVerifier, OAuth2AuthorizationStateManager, OAuth2AuthorizeGrant, OAuth2ClientAuthenticator, OAuth2EndSessionRequestValidator, OAuth2EndSessionService, OAuth2OpenIDClaimsBuilder, OAuth2OpenIDTokenIssuer, OAuth2RefreshTokenGrant, OAuth2RefreshTokenIssuer, OAuth2ScopeAttributesResolver, OAuth2TokenRevoker, OAuth2TokenSigner, OAuth2TokenVerifier, PasswordGrantType, RobotCredentialsGrant, assertClientGrantAllowed, base64URLEncode, buildOAuth2BearerTokenResponse, buildOAuth2CodeChallenge, buildOAuth2TokenHash, generateOAuth2CodeVerifier };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/oauth2/session-token/index.ts"],"names":[],"mappings":"AAOA,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { SessionToken, SessionTokenKind } from '@authup/core-kit';
|
|
2
|
+
export type SessionTokenCreateInput = {
|
|
3
|
+
id: string;
|
|
4
|
+
session_id: string;
|
|
5
|
+
kind: SessionTokenKind;
|
|
6
|
+
parent_id?: string | null;
|
|
7
|
+
refresh_token_id?: string | null;
|
|
8
|
+
ip_address: string;
|
|
9
|
+
user_agent: string;
|
|
10
|
+
expires_at: string;
|
|
11
|
+
};
|
|
12
|
+
export type SessionTokenRef = {
|
|
13
|
+
id: string;
|
|
14
|
+
expires_at: string;
|
|
15
|
+
};
|
|
16
|
+
export interface ISessionTokenRepository {
|
|
17
|
+
/**
|
|
18
|
+
* Persist a newly issued session-token row.
|
|
19
|
+
*/
|
|
20
|
+
create(input: SessionTokenCreateInput): Promise<SessionToken>;
|
|
21
|
+
/**
|
|
22
|
+
* Find a session-token row by its id (= jti).
|
|
23
|
+
*/
|
|
24
|
+
findOneById(id: string): Promise<SessionToken | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Inventory query — every token bound to a session.
|
|
27
|
+
*/
|
|
28
|
+
findBySessionId(sessionId: string): Promise<SessionToken[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Atomically consume a refresh-token row. Resolves `true` only when this
|
|
31
|
+
* call flipped a fresh (not consumed, not revoked) refresh row to consumed;
|
|
32
|
+
* `false` on a replay / concurrent-refresh loser.
|
|
33
|
+
*
|
|
34
|
+
* @param id jti
|
|
35
|
+
* @param at consumption timestamp (iso)
|
|
36
|
+
*/
|
|
37
|
+
markRefreshConsumed(id: string, at: string): Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* Whether any refresh-token row descended from `parentId` has itself been
|
|
40
|
+
* consumed — i.e. the rotation chain has advanced past `parentId`. Used to
|
|
41
|
+
* scope the grace window to the chain tip (a consumed descendant proves the
|
|
42
|
+
* presented token is a stale ancestor, not a benign concurrent re-use).
|
|
43
|
+
*
|
|
44
|
+
* @param parentId jti of the presented refresh token
|
|
45
|
+
*/
|
|
46
|
+
hasConsumedChild(parentId: string): Promise<boolean>;
|
|
47
|
+
/**
|
|
48
|
+
* Soft-revoke a single token row (e.g. explicit `/token/revoke`).
|
|
49
|
+
*
|
|
50
|
+
* @param id jti
|
|
51
|
+
* @param at revocation timestamp (iso)
|
|
52
|
+
*/
|
|
53
|
+
revokeById(id: string, at: string): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Soft-revoke every token row of a session (family revoke). Returns the
|
|
56
|
+
* affected rows' jti + expiry so the caller can blocklist each in cache
|
|
57
|
+
* with a TTL pinned to the token's real lifetime.
|
|
58
|
+
*
|
|
59
|
+
* @param sessionId
|
|
60
|
+
* @param at revocation timestamp (iso)
|
|
61
|
+
*/
|
|
62
|
+
revokeBySessionId(sessionId: string, at: string): Promise<SessionTokenRef[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Delete every token row whose `expires_at` is before the given timestamp.
|
|
65
|
+
*
|
|
66
|
+
* @param before iso timestamp
|
|
67
|
+
*/
|
|
68
|
+
deleteExpired(before: string): Promise<number>;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/oauth2/session-token/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEvE,MAAM,MAAM,uBAAuB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACpC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAE9D;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAEtD;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAE5D;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE9D;;;;;;;OAOG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAErD;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElD;;;;;;;OAOG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAE7E;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { OAuth2TokenPayload } from '@authup/specs';
|
|
2
2
|
import type { IOAuth2TokenSigner } from '../../signer/index.ts';
|
|
3
3
|
import type { IOAuth2TokenRepository } from '../../repository/index.ts';
|
|
4
|
+
import type { ISessionTokenRepository } from '../../../session-token/index.ts';
|
|
4
5
|
import { OAuth2BaseTokenIssuer } from '../base.ts';
|
|
5
6
|
import type { IOAuth2TokenIssuer, OAuth2TokenIssuerOptions, OAuth2TokenIssuerResponse } from '../types.ts';
|
|
6
7
|
import type { IIdentityRoleProvider } from '../../../../identity/index.ts';
|
|
@@ -8,7 +9,8 @@ export declare class OAuth2AccessTokenIssuer extends OAuth2BaseTokenIssuer imple
|
|
|
8
9
|
protected repository: IOAuth2TokenRepository;
|
|
9
10
|
protected signer: IOAuth2TokenSigner;
|
|
10
11
|
protected identityRoleProvider?: IIdentityRoleProvider;
|
|
11
|
-
|
|
12
|
+
protected sessionTokenRepository?: ISessionTokenRepository;
|
|
13
|
+
constructor(repository: IOAuth2TokenRepository, signer: IOAuth2TokenSigner, options?: OAuth2TokenIssuerOptions, identityRoleProvider?: IIdentityRoleProvider, sessionTokenRepository?: ISessionTokenRepository);
|
|
12
14
|
issue(input?: OAuth2TokenPayload): Promise<OAuth2TokenIssuerResponse>;
|
|
13
15
|
protected buildAccessClaims(input: OAuth2TokenPayload): Promise<Pick<OAuth2TokenPayload, 'realm_access' | 'global_access'>>;
|
|
14
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/core/oauth2/token/issuer/access/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,qBAAa,uBAAwB,SAAQ,qBAAsB,YAAW,kBAAkB;IAC5F,SAAS,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAE7C,SAAS,CAAC,MAAM,EAAG,kBAAkB,CAAC;IAEtC,SAAS,CAAC,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/core/oauth2/token/issuer/access/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,qBAAa,uBAAwB,SAAQ,qBAAsB,YAAW,kBAAkB;IAC5F,SAAS,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAE7C,SAAS,CAAC,MAAM,EAAG,kBAAkB,CAAC;IAEtC,SAAS,CAAC,oBAAoB,CAAC,EAAE,qBAAqB,CAAC;IAEvD,SAAS,CAAC,sBAAsB,CAAC,EAAE,uBAAuB,CAAC;gBAGvD,UAAU,EAAE,sBAAsB,EAClC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,wBAA6B,EACtC,oBAAoB,CAAC,EAAE,qBAAqB,EAC5C,sBAAsB,CAAC,EAAE,uBAAuB;IAU9C,KAAK,CAAC,KAAK,GAAE,kBAAuB,GAAI,OAAO,CAAC,yBAAyB,CAAC;cAgChE,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAI,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,cAAc,GAAG,eAAe,CAAC,CAAC;CA6BrI"}
|
|
@@ -8,11 +8,13 @@ var OAuth2AccessTokenIssuer = class extends OAuth2BaseTokenIssuer {
|
|
|
8
8
|
repository;
|
|
9
9
|
signer;
|
|
10
10
|
identityRoleProvider;
|
|
11
|
-
|
|
11
|
+
sessionTokenRepository;
|
|
12
|
+
constructor(repository, signer, options = {}, identityRoleProvider, sessionTokenRepository) {
|
|
12
13
|
super(options);
|
|
13
14
|
this.repository = repository;
|
|
14
15
|
this.signer = signer;
|
|
15
16
|
this.identityRoleProvider = identityRoleProvider;
|
|
17
|
+
this.sessionTokenRepository = sessionTokenRepository;
|
|
16
18
|
}
|
|
17
19
|
async issue(input = {}) {
|
|
18
20
|
const iss = this.buildIss(input);
|
|
@@ -26,6 +28,15 @@ var OAuth2AccessTokenIssuer = class extends OAuth2BaseTokenIssuer {
|
|
|
26
28
|
});
|
|
27
29
|
const token = await this.signer.sign(data);
|
|
28
30
|
await this.repository.saveWithSignature(data, token);
|
|
31
|
+
if (this.sessionTokenRepository && data.session_id && data.jti && typeof data.exp === "number") await this.sessionTokenRepository.create({
|
|
32
|
+
id: data.jti,
|
|
33
|
+
session_id: data.session_id,
|
|
34
|
+
kind: "access",
|
|
35
|
+
refresh_token_id: input.refresh_token_id ?? null,
|
|
36
|
+
ip_address: data.remote_address ?? "",
|
|
37
|
+
user_agent: data.user_agent ?? "",
|
|
38
|
+
expires_at: (/* @__PURE__ */ new Date(data.exp * 1e3)).toISOString()
|
|
39
|
+
});
|
|
29
40
|
return [token, data];
|
|
30
41
|
}
|
|
31
42
|
async buildAccessClaims(input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["OAuth2TokenKind","OAuth2BaseTokenIssuer","OAuth2AccessTokenIssuer","repository","signer","identityRoleProvider","options","issue","input","iss","buildIss","accessClaims","buildAccessClaims","data","insert","kind","ACCESS","exp","buildExp","token","sign","saveWithSignature","sub","sub_kind","roles","getRolesFor","type","
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["OAuth2TokenKind","OAuth2BaseTokenIssuer","OAuth2AccessTokenIssuer","repository","signer","identityRoleProvider","sessionTokenRepository","options","issue","input","iss","buildIss","accessClaims","buildAccessClaims","data","insert","kind","ACCESS","exp","buildExp","token","sign","saveWithSignature","session_id","jti","create","id","refresh_token_id","ip_address","remote_address","user_agent","expires_at","Date","toISOString","sub","sub_kind","roles","getRolesFor","type","clientId","client_id","realmId","realm_id","realmName","realm_name","realmRoles","globalRoles","role","push","name","realm_access","global_access"],"sources":["../../../../../../src/core/oauth2/token/issuer/access/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { OAuth2TokenPayload } from '@authup/specs';\nimport { OAuth2TokenKind } from '@authup/specs';\nimport type { IOAuth2TokenSigner } from '../../signer/index.ts';\nimport type { IOAuth2TokenRepository } from '../../repository/index.ts';\nimport type { ISessionTokenRepository } from '../../../session-token/index.ts';\nimport { OAuth2BaseTokenIssuer } from '../base.ts';\nimport type { IOAuth2TokenIssuer, OAuth2TokenIssuerOptions, OAuth2TokenIssuerResponse } from '../types.ts';\nimport type { IIdentityRoleProvider } from '../../../../identity/index.ts';\n\nexport class OAuth2AccessTokenIssuer extends OAuth2BaseTokenIssuer implements IOAuth2TokenIssuer {\n protected repository: IOAuth2TokenRepository;\n\n protected signer : IOAuth2TokenSigner;\n\n protected identityRoleProvider?: IIdentityRoleProvider;\n\n protected sessionTokenRepository?: ISessionTokenRepository;\n\n constructor(\n repository: IOAuth2TokenRepository,\n signer: IOAuth2TokenSigner,\n options: OAuth2TokenIssuerOptions = {},\n identityRoleProvider?: IIdentityRoleProvider,\n sessionTokenRepository?: ISessionTokenRepository,\n ) {\n super(options);\n\n this.repository = repository;\n this.signer = signer;\n this.identityRoleProvider = identityRoleProvider;\n this.sessionTokenRepository = sessionTokenRepository;\n }\n\n async issue(input: OAuth2TokenPayload = {}) : Promise<OAuth2TokenIssuerResponse> {\n const iss = this.buildIss(input);\n\n const accessClaims = await this.buildAccessClaims(input);\n\n const data = await this.repository.insert({\n ...input,\n kind: OAuth2TokenKind.ACCESS,\n exp: this.buildExp(input),\n ...(iss ? { iss } : {}),\n ...accessClaims,\n });\n\n const token = await this.signer.sign(data);\n\n await this.repository.saveWithSignature(data, token);\n\n if (this.sessionTokenRepository && data.session_id && data.jti && typeof data.exp === 'number') {\n await this.sessionTokenRepository.create({\n id: data.jti,\n session_id: data.session_id,\n kind: 'access',\n refresh_token_id: input.refresh_token_id ?? null,\n ip_address: data.remote_address ?? '',\n user_agent: data.user_agent ?? '',\n expires_at: new Date(data.exp * 1000).toISOString(),\n });\n }\n\n return [token, data];\n }\n\n protected async buildAccessClaims(input: OAuth2TokenPayload) : Promise<Pick<OAuth2TokenPayload, 'realm_access' | 'global_access'>> {\n if (!this.identityRoleProvider || !input.sub || !input.sub_kind) {\n return {};\n }\n\n const roles = await this.identityRoleProvider.getRolesFor({\n type: input.sub_kind,\n id: input.sub,\n clientId: input.client_id,\n realmId: input.realm_id,\n realmName: input.realm_name,\n });\n\n const realmRoles: string[] = [];\n const globalRoles: string[] = [];\n\n for (const role of roles) {\n if (!role.realm_id) {\n globalRoles.push(role.name);\n } else if (input.realm_id && role.realm_id === input.realm_id) {\n realmRoles.push(role.name);\n }\n }\n\n return {\n realm_access: { roles: realmRoles },\n global_access: { roles: globalRoles },\n };\n }\n}\n"],"mappings":";;;;;;AAgBA,IAAaE,0BAAb,cAA6CD,sBAAAA;CAC/BE;CAEAC;CAEAC;CAEAC;CAEV,YACIH,YACAC,QACAG,UAAoC,CAAC,GACrCF,sBACAC,wBACF;EACE,MAAMC,OAAAA;EAEN,KAAKJ,aAAaA;EAClB,KAAKC,SAASA;EACd,KAAKC,uBAAuBA;EAC5B,KAAKC,yBAAyBA;CAClC;CAEA,MAAME,MAAMC,QAA4B,CAAC,GAAwC;EAC7E,MAAMC,MAAM,KAAKC,SAASF,KAAAA;EAE1B,MAAMG,eAAe,MAAM,KAAKC,kBAAkBJ,KAAAA;EAElD,MAAMK,OAAO,MAAM,KAAKX,WAAWY,OAAO;GACtC,GAAGN;GACHO,MAAMhB,gBAAgBiB;GACtBC,KAAK,KAAKC,SAASV,KAAAA;GACnB,GAAIC,MAAM,EAAEA,IAAI,IAAI,CAAC;GACrB,GAAGE;EACP,CAAA;EAEA,MAAMQ,QAAQ,MAAM,KAAKhB,OAAOiB,KAAKP,IAAAA;EAErC,MAAM,KAAKX,WAAWmB,kBAAkBR,MAAMM,KAAAA;EAE9C,IAAI,KAAKd,0BAA0BQ,KAAKS,cAAcT,KAAKU,OAAO,OAAOV,KAAKI,QAAQ,UAClF,MAAM,KAAKZ,uBAAuBmB,OAAO;GACrCC,IAAIZ,KAAKU;GACTD,YAAYT,KAAKS;GACjBP,MAAM;GACNW,kBAAkBlB,MAAMkB,oBAAoB;GAC5CC,YAAYd,KAAKe,kBAAkB;GACnCC,YAAYhB,KAAKgB,cAAc;GAC/BC,6BAAY,IAAIC,KAAKlB,KAAKI,MAAM,GAAA,EAAA,CAAMe,YAAW;EACrD,CAAA;EAGJ,OAAO,CAACb,OAAON,IAAAA;CACnB;CAEA,MAAgBD,kBAAkBJ,OAAiG;EAC/H,IAAI,CAAC,KAAKJ,wBAAwB,CAACI,MAAMyB,OAAO,CAACzB,MAAM0B,UACnD,OAAO,CAAC;EAGZ,MAAMC,QAAQ,MAAM,KAAK/B,qBAAqBgC,YAAY;GACtDC,MAAM7B,MAAM0B;GACZT,IAAIjB,MAAMyB;GACVK,UAAU9B,MAAM+B;GAChBC,SAAShC,MAAMiC;GACfC,WAAWlC,MAAMmC;EACrB,CAAA;EAEA,MAAMC,aAAuB,CAAA;EAC7B,MAAMC,cAAwB,CAAA;EAE9B,KAAK,MAAMC,QAAQX,OACf,IAAI,CAACW,KAAKL,UACNI,YAAYE,KAAKD,KAAKE,IAAI;OACvB,IAAIxC,MAAMiC,YAAYK,KAAKL,aAAajC,MAAMiC,UACjDG,WAAWG,KAAKD,KAAKE,IAAI;EAIjC,OAAO;GACHC,cAAc,EAAEd,OAAOS,WAAW;GAClCM,eAAe,EAAEf,OAAOU,YAAY;EACxC;CACJ;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/core/oauth2/token/issuer/open-id/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,qBAAa,uBAAwB,SAAQ,qBAAsB,YAAW,wBAAwB;IAClG,SAAS,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAE7C,SAAS,CAAC,MAAM,EAAG,kBAAkB,CAAC;IAEtC,SAAS,CAAC,gBAAgB,EAAG,iBAAiB,CAAC;IAE/C,SAAS,CAAC,aAAa,EAAE,yBAAyB,CAAC;gBAEvC,GAAG,EAAE,8BAA8B;IAUzC,KAAK,CAAC,KAAK,GAAE,kBAAuB,GAAI,OAAO,CAAC,yBAAyB,CAAC;IAqB1E,iBAAiB,CACnB,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,QAAQ,GACnB,OAAO,CAAC,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/core/oauth2/token/issuer/open-id/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,qBAAa,uBAAwB,SAAQ,qBAAsB,YAAW,wBAAwB;IAClG,SAAS,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAE7C,SAAS,CAAC,MAAM,EAAG,kBAAkB,CAAC;IAEtC,SAAS,CAAC,gBAAgB,EAAG,iBAAiB,CAAC;IAE/C,SAAS,CAAC,aAAa,EAAE,yBAAyB,CAAC;gBAEvC,GAAG,EAAE,8BAA8B;IAUzC,KAAK,CAAC,KAAK,GAAE,kBAAuB,GAAI,OAAO,CAAC,yBAAyB,CAAC;IAqB1E,iBAAiB,CACnB,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,QAAQ,GACnB,OAAO,CAAC,yBAAyB,CAAC;CA2BxC"}
|
|
@@ -33,7 +33,7 @@ var OAuth2OpenIDTokenIssuer = class extends OAuth2BaseTokenIssuer {
|
|
|
33
33
|
...input,
|
|
34
34
|
...claims,
|
|
35
35
|
kind: OAuth2TokenKind.ID_TOKEN,
|
|
36
|
-
auth_time: utc,
|
|
36
|
+
auth_time: typeof input.auth_time === "number" ? input.auth_time : utc,
|
|
37
37
|
exp: this.buildExp(input),
|
|
38
38
|
updated_at: utc,
|
|
39
39
|
...iss ? { iss } : {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["JWTError","OAuth2TokenKind","OAuth2OpenIDClaimsBuilder","OAuth2BaseTokenIssuer","OAuth2OpenIDTokenIssuer","repository","signer","identityResolver","claimsBuilder","ctx","options","issue","input","sub_kind","payloadPropertyInvalid","sub","identity","resolve","payloadInvalid","issueWithIdentity","claims","fromIdentity","utc","Math","floor","Date","getTime","iss","buildIss","data","insert","kind","ID_TOKEN","auth_time","exp","buildExp","updated_at","client_id","aud","token","sign","saveWithSignature"],"sources":["../../../../../../src/core/oauth2/token/issuer/open-id/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { OAuth2TokenPayload } from '@authup/specs';\nimport { JWTError, OAuth2TokenKind } from '@authup/specs';\nimport type { Identity } from '@authup/core-kit';\nimport { OAuth2OpenIDClaimsBuilder } from '../../../openid/index.ts';\nimport type { IOAuth2TokenSigner } from '../../signer/index.ts';\nimport type { IOAuth2TokenRepository } from '../../repository/index.ts';\nimport { OAuth2BaseTokenIssuer } from '../base.ts';\nimport type { OAuth2TokenIssuerResponse } from '../types.ts';\nimport type { IOAuth2OpenIDTokenIssuer, OAuth2OpenIDTokenIssuerContext } from './types.ts';\nimport type { IIdentityResolver } from '../../../../identity/index.ts';\n\nexport class OAuth2OpenIDTokenIssuer extends OAuth2BaseTokenIssuer implements IOAuth2OpenIDTokenIssuer {\n protected repository: IOAuth2TokenRepository;\n\n protected signer : IOAuth2TokenSigner;\n\n protected identityResolver : IIdentityResolver;\n\n protected claimsBuilder: OAuth2OpenIDClaimsBuilder;\n\n constructor(ctx: OAuth2OpenIDTokenIssuerContext) {\n super(ctx.options);\n\n this.repository = ctx.repository;\n this.signer = ctx.signer;\n\n this.identityResolver = ctx.identityResolver;\n this.claimsBuilder = new OAuth2OpenIDClaimsBuilder();\n }\n\n async issue(input: OAuth2TokenPayload = {}) : Promise<OAuth2TokenIssuerResponse> {\n if (!input.sub_kind) {\n throw JWTError.payloadPropertyInvalid('sub_kind');\n }\n\n if (!input.sub) {\n throw JWTError.payloadPropertyInvalid('sub');\n }\n\n const identity = await this.identityResolver.resolve(\n input.sub_kind,\n input.sub,\n );\n\n if (!identity) {\n throw JWTError.payloadInvalid();\n }\n\n return this.issueWithIdentity(input, identity);\n }\n\n async issueWithIdentity(\n input: OAuth2TokenPayload,\n identity: Identity,\n ): Promise<OAuth2TokenIssuerResponse> {\n const claims = this.claimsBuilder.fromIdentity(identity);\n\n const utc = Math.floor(new Date().getTime() / 1000);\n\n const iss = this.buildIss(input);\n\n const data = await this.repository.insert({\n ...input,\n ...claims,\n kind: OAuth2TokenKind.ID_TOKEN,\n auth_time: utc,\n exp: this.buildExp(input),\n updated_at: utc,\n ...(iss ? { iss } : {}),\n ...(input.client_id ? { aud: input.client_id } : {}),\n });\n\n const token = await this.signer.sign(data);\n\n await this.repository.saveWithSignature(data, token);\n\n return [token, data];\n }\n}\n"],"mappings":";;;;;;;;AAkBA,IAAaI,0BAAb,cAA6CD,sBAAAA;CAC/BE;CAEAC;CAEAC;CAEAC;CAEV,YAAYC,KAAqC;EAC7C,MAAMA,IAAIC,OAAO;EAEjB,KAAKL,aAAaI,IAAIJ;EACtB,KAAKC,SAASG,IAAIH;EAElB,KAAKC,mBAAmBE,IAAIF;EAC5B,KAAKC,gBAAgB,IAAIN,0BAAAA;CAC7B;CAEA,MAAMS,MAAMC,QAA4B,CAAC,GAAwC;EAC7E,IAAI,CAACA,MAAMC,UACP,MAAMb,SAASc,uBAAuB,UAAA;EAG1C,IAAI,CAACF,MAAMG,KACP,MAAMf,SAASc,uBAAuB,KAAA;EAG1C,MAAME,WAAW,MAAM,KAAKT,iBAAiBU,QACzCL,MAAMC,UACND,MAAMG,GAAG;EAGb,IAAI,CAACC,UACD,MAAMhB,SAASkB,eAAc;EAGjC,OAAO,KAAKC,kBAAkBP,OAAOI,QAAAA;CACzC;CAEA,MAAMG,kBACFP,OACAI,UACkC;EAClC,MAAMI,SAAS,KAAKZ,cAAca,aAAaL,QAAAA;EAE/C,MAAMM,MAAMC,KAAKC,uBAAM,IAAIC,KAAAA,EAAAA,CAAOC,QAAO,IAAK,GAAA;EAE9C,MAAMC,MAAM,KAAKC,SAAShB,KAAAA;EAE1B,MAAMiB,OAAO,MAAM,KAAKxB,WAAWyB,OAAO;GACtC,GAAGlB;GACH,GAAGQ;GACHW,MAAM9B,gBAAgB+B;
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["JWTError","OAuth2TokenKind","OAuth2OpenIDClaimsBuilder","OAuth2BaseTokenIssuer","OAuth2OpenIDTokenIssuer","repository","signer","identityResolver","claimsBuilder","ctx","options","issue","input","sub_kind","payloadPropertyInvalid","sub","identity","resolve","payloadInvalid","issueWithIdentity","claims","fromIdentity","utc","Math","floor","Date","getTime","iss","buildIss","data","insert","kind","ID_TOKEN","auth_time","exp","buildExp","updated_at","client_id","aud","token","sign","saveWithSignature"],"sources":["../../../../../../src/core/oauth2/token/issuer/open-id/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { OAuth2TokenPayload } from '@authup/specs';\nimport { JWTError, OAuth2TokenKind } from '@authup/specs';\nimport type { Identity } from '@authup/core-kit';\nimport { OAuth2OpenIDClaimsBuilder } from '../../../openid/index.ts';\nimport type { IOAuth2TokenSigner } from '../../signer/index.ts';\nimport type { IOAuth2TokenRepository } from '../../repository/index.ts';\nimport { OAuth2BaseTokenIssuer } from '../base.ts';\nimport type { OAuth2TokenIssuerResponse } from '../types.ts';\nimport type { IOAuth2OpenIDTokenIssuer, OAuth2OpenIDTokenIssuerContext } from './types.ts';\nimport type { IIdentityResolver } from '../../../../identity/index.ts';\n\nexport class OAuth2OpenIDTokenIssuer extends OAuth2BaseTokenIssuer implements IOAuth2OpenIDTokenIssuer {\n protected repository: IOAuth2TokenRepository;\n\n protected signer : IOAuth2TokenSigner;\n\n protected identityResolver : IIdentityResolver;\n\n protected claimsBuilder: OAuth2OpenIDClaimsBuilder;\n\n constructor(ctx: OAuth2OpenIDTokenIssuerContext) {\n super(ctx.options);\n\n this.repository = ctx.repository;\n this.signer = ctx.signer;\n\n this.identityResolver = ctx.identityResolver;\n this.claimsBuilder = new OAuth2OpenIDClaimsBuilder();\n }\n\n async issue(input: OAuth2TokenPayload = {}) : Promise<OAuth2TokenIssuerResponse> {\n if (!input.sub_kind) {\n throw JWTError.payloadPropertyInvalid('sub_kind');\n }\n\n if (!input.sub) {\n throw JWTError.payloadPropertyInvalid('sub');\n }\n\n const identity = await this.identityResolver.resolve(\n input.sub_kind,\n input.sub,\n );\n\n if (!identity) {\n throw JWTError.payloadInvalid();\n }\n\n return this.issueWithIdentity(input, identity);\n }\n\n async issueWithIdentity(\n input: OAuth2TokenPayload,\n identity: Identity,\n ): Promise<OAuth2TokenIssuerResponse> {\n const claims = this.claimsBuilder.fromIdentity(identity);\n\n const utc = Math.floor(new Date().getTime() / 1000);\n\n const iss = this.buildIss(input);\n\n const data = await this.repository.insert({\n ...input,\n ...claims,\n kind: OAuth2TokenKind.ID_TOKEN,\n // Real authentication time when threaded from the authorize flow\n // (the session's creation instant); fall back to issuance time only\n // for session-less id_token issuance. `sid` rides via ...input.\n auth_time: typeof input.auth_time === 'number' ? input.auth_time : utc,\n exp: this.buildExp(input),\n updated_at: utc,\n ...(iss ? { iss } : {}),\n ...(input.client_id ? { aud: input.client_id } : {}),\n });\n\n const token = await this.signer.sign(data);\n\n await this.repository.saveWithSignature(data, token);\n\n return [token, data];\n }\n}\n"],"mappings":";;;;;;;;AAkBA,IAAaI,0BAAb,cAA6CD,sBAAAA;CAC/BE;CAEAC;CAEAC;CAEAC;CAEV,YAAYC,KAAqC;EAC7C,MAAMA,IAAIC,OAAO;EAEjB,KAAKL,aAAaI,IAAIJ;EACtB,KAAKC,SAASG,IAAIH;EAElB,KAAKC,mBAAmBE,IAAIF;EAC5B,KAAKC,gBAAgB,IAAIN,0BAAAA;CAC7B;CAEA,MAAMS,MAAMC,QAA4B,CAAC,GAAwC;EAC7E,IAAI,CAACA,MAAMC,UACP,MAAMb,SAASc,uBAAuB,UAAA;EAG1C,IAAI,CAACF,MAAMG,KACP,MAAMf,SAASc,uBAAuB,KAAA;EAG1C,MAAME,WAAW,MAAM,KAAKT,iBAAiBU,QACzCL,MAAMC,UACND,MAAMG,GAAG;EAGb,IAAI,CAACC,UACD,MAAMhB,SAASkB,eAAc;EAGjC,OAAO,KAAKC,kBAAkBP,OAAOI,QAAAA;CACzC;CAEA,MAAMG,kBACFP,OACAI,UACkC;EAClC,MAAMI,SAAS,KAAKZ,cAAca,aAAaL,QAAAA;EAE/C,MAAMM,MAAMC,KAAKC,uBAAM,IAAIC,KAAAA,EAAAA,CAAOC,QAAO,IAAK,GAAA;EAE9C,MAAMC,MAAM,KAAKC,SAAShB,KAAAA;EAE1B,MAAMiB,OAAO,MAAM,KAAKxB,WAAWyB,OAAO;GACtC,GAAGlB;GACH,GAAGQ;GACHW,MAAM9B,gBAAgB+B;GAItBC,WAAW,OAAOrB,MAAMqB,cAAc,WAAWrB,MAAMqB,YAAYX;GACnEY,KAAK,KAAKC,SAASvB,KAAAA;GACnBwB,YAAYd;GACZ,GAAIK,MAAM,EAAEA,IAAI,IAAI,CAAC;GACrB,GAAIf,MAAMyB,YAAY,EAAEC,KAAK1B,MAAMyB,UAAU,IAAI,CAAC;EACtD,CAAA;EAEA,MAAME,QAAQ,MAAM,KAAKjC,OAAOkC,KAAKX,IAAAA;EAErC,MAAM,KAAKxB,WAAWoC,kBAAkBZ,MAAMU,KAAAA;EAE9C,OAAO,CAACA,OAAOV,IAAAA;CACnB;AACJ"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { OAuth2TokenPayload } from '@authup/specs';
|
|
2
2
|
import type { IOAuth2TokenSigner } from '../../signer/index.ts';
|
|
3
3
|
import type { IOAuth2TokenRepository } from '../../repository/index.ts';
|
|
4
|
+
import type { ISessionTokenRepository } from '../../../session-token/index.ts';
|
|
4
5
|
import { OAuth2BaseTokenIssuer } from '../base.ts';
|
|
5
6
|
import type { IOAuth2TokenIssuer, OAuth2TokenIssuerOptions, OAuth2TokenIssuerResponse } from '../types.ts';
|
|
6
7
|
export declare class OAuth2RefreshTokenIssuer extends OAuth2BaseTokenIssuer implements IOAuth2TokenIssuer {
|
|
7
8
|
protected repository: IOAuth2TokenRepository;
|
|
8
9
|
protected signer: IOAuth2TokenSigner;
|
|
9
|
-
|
|
10
|
+
protected sessionTokenRepository?: ISessionTokenRepository;
|
|
11
|
+
constructor(repository: IOAuth2TokenRepository, signer: IOAuth2TokenSigner, options?: OAuth2TokenIssuerOptions, sessionTokenRepository?: ISessionTokenRepository);
|
|
10
12
|
issue(input?: OAuth2TokenPayload): Promise<OAuth2TokenIssuerResponse>;
|
|
11
13
|
}
|
|
12
14
|
//# sourceMappingURL=module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/core/oauth2/token/issuer/refresh/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE3G,qBAAa,wBAAyB,SAAQ,qBAAsB,YAAW,kBAAkB;IAC7F,SAAS,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAE7C,SAAS,CAAC,MAAM,EAAG,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../../src/core/oauth2/token/issuer/refresh/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE3G,qBAAa,wBAAyB,SAAQ,qBAAsB,YAAW,kBAAkB;IAC7F,SAAS,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAE7C,SAAS,CAAC,MAAM,EAAG,kBAAkB,CAAC;IAEtC,SAAS,CAAC,sBAAsB,CAAC,EAAE,uBAAuB,CAAC;gBAGvD,UAAU,EAAE,sBAAsB,EAClC,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,wBAA6B,EACtC,sBAAsB,CAAC,EAAE,uBAAuB;IAS9C,KAAK,CAAC,KAAK,GAAE,kBAAuB,GAAI,OAAO,CAAC,yBAAyB,CAAC;CA4BnF"}
|
|
@@ -7,10 +7,12 @@ import { OAuth2TokenKind } from "@authup/specs";
|
|
|
7
7
|
var OAuth2RefreshTokenIssuer = class extends OAuth2BaseTokenIssuer {
|
|
8
8
|
repository;
|
|
9
9
|
signer;
|
|
10
|
-
|
|
10
|
+
sessionTokenRepository;
|
|
11
|
+
constructor(repository, signer, options = {}, sessionTokenRepository) {
|
|
11
12
|
super(options);
|
|
12
13
|
this.repository = repository;
|
|
13
14
|
this.signer = signer;
|
|
15
|
+
this.sessionTokenRepository = sessionTokenRepository;
|
|
14
16
|
}
|
|
15
17
|
async issue(input = {}) {
|
|
16
18
|
const iss = this.buildIss(input);
|
|
@@ -22,6 +24,15 @@ var OAuth2RefreshTokenIssuer = class extends OAuth2BaseTokenIssuer {
|
|
|
22
24
|
});
|
|
23
25
|
const token = await this.signer.sign(data);
|
|
24
26
|
await this.repository.saveWithSignature(data, token);
|
|
27
|
+
if (this.sessionTokenRepository && data.session_id && data.jti && typeof data.exp === "number") await this.sessionTokenRepository.create({
|
|
28
|
+
id: data.jti,
|
|
29
|
+
session_id: data.session_id,
|
|
30
|
+
kind: "refresh",
|
|
31
|
+
parent_id: input.parent_id ?? null,
|
|
32
|
+
ip_address: data.remote_address ?? "",
|
|
33
|
+
user_agent: data.user_agent ?? "",
|
|
34
|
+
expires_at: (/* @__PURE__ */ new Date(data.exp * 1e3)).toISOString()
|
|
35
|
+
});
|
|
25
36
|
return [token, data];
|
|
26
37
|
}
|
|
27
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["OAuth2TokenKind","OAuth2BaseTokenIssuer","OAuth2RefreshTokenIssuer","repository","signer","options","issue","input","iss","buildIss","data","insert","kind","REFRESH","exp","buildExp","token","sign","saveWithSignature"],"sources":["../../../../../../src/core/oauth2/token/issuer/refresh/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { OAuth2TokenPayload } from '@authup/specs';\nimport { OAuth2TokenKind } from '@authup/specs';\nimport type { IOAuth2TokenSigner } from '../../signer/index.ts';\nimport type { IOAuth2TokenRepository } from '../../repository/index.ts';\nimport { OAuth2BaseTokenIssuer } from '../base.ts';\nimport type { IOAuth2TokenIssuer, OAuth2TokenIssuerOptions, OAuth2TokenIssuerResponse } from '../types.ts';\n\nexport class OAuth2RefreshTokenIssuer extends OAuth2BaseTokenIssuer implements IOAuth2TokenIssuer {\n protected repository: IOAuth2TokenRepository;\n\n protected signer : IOAuth2TokenSigner;\n\n constructor(\n repository: IOAuth2TokenRepository,\n signer: IOAuth2TokenSigner,\n options: OAuth2TokenIssuerOptions = {},\n ) {\n super(options);\n\n this.repository = repository;\n this.signer = signer;\n }\n\n async issue(input: OAuth2TokenPayload = {}) : Promise<OAuth2TokenIssuerResponse> {\n const iss = this.buildIss(input);\n\n const data = await this.repository.insert({\n ...input,\n kind: OAuth2TokenKind.REFRESH,\n exp: this.buildExp(input),\n ...(iss ? { iss } : {}),\n });\n\n const token = await this.signer.sign(data);\n\n await this.repository.saveWithSignature(data, token);\n\n return [token, data];\n }\n}\n"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["OAuth2TokenKind","OAuth2BaseTokenIssuer","OAuth2RefreshTokenIssuer","repository","signer","sessionTokenRepository","options","issue","input","iss","buildIss","data","insert","kind","REFRESH","exp","buildExp","token","sign","saveWithSignature","session_id","jti","create","id","parent_id","ip_address","remote_address","user_agent","expires_at","Date","toISOString"],"sources":["../../../../../../src/core/oauth2/token/issuer/refresh/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { OAuth2TokenPayload } from '@authup/specs';\nimport { OAuth2TokenKind } from '@authup/specs';\nimport type { IOAuth2TokenSigner } from '../../signer/index.ts';\nimport type { IOAuth2TokenRepository } from '../../repository/index.ts';\nimport type { ISessionTokenRepository } from '../../../session-token/index.ts';\nimport { OAuth2BaseTokenIssuer } from '../base.ts';\nimport type { IOAuth2TokenIssuer, OAuth2TokenIssuerOptions, OAuth2TokenIssuerResponse } from '../types.ts';\n\nexport class OAuth2RefreshTokenIssuer extends OAuth2BaseTokenIssuer implements IOAuth2TokenIssuer {\n protected repository: IOAuth2TokenRepository;\n\n protected signer : IOAuth2TokenSigner;\n\n protected sessionTokenRepository?: ISessionTokenRepository;\n\n constructor(\n repository: IOAuth2TokenRepository,\n signer: IOAuth2TokenSigner,\n options: OAuth2TokenIssuerOptions = {},\n sessionTokenRepository?: ISessionTokenRepository,\n ) {\n super(options);\n\n this.repository = repository;\n this.signer = signer;\n this.sessionTokenRepository = sessionTokenRepository;\n }\n\n async issue(input: OAuth2TokenPayload = {}) : Promise<OAuth2TokenIssuerResponse> {\n const iss = this.buildIss(input);\n\n const data = await this.repository.insert({\n ...input,\n kind: OAuth2TokenKind.REFRESH,\n exp: this.buildExp(input),\n ...(iss ? { iss } : {}),\n });\n\n const token = await this.signer.sign(data);\n\n await this.repository.saveWithSignature(data, token);\n\n if (this.sessionTokenRepository && data.session_id && data.jti && typeof data.exp === 'number') {\n await this.sessionTokenRepository.create({\n id: data.jti,\n session_id: data.session_id,\n kind: 'refresh',\n parent_id: input.parent_id ?? null,\n ip_address: data.remote_address ?? '',\n user_agent: data.user_agent ?? '',\n expires_at: new Date(data.exp * 1000).toISOString(),\n });\n }\n\n return [token, data];\n }\n}\n"],"mappings":";;;;;;AAeA,IAAaE,2BAAb,cAA8CD,sBAAAA;CAChCE;CAEAC;CAEAC;CAEV,YACIF,YACAC,QACAE,UAAoC,CAAC,GACrCD,wBACF;EACE,MAAMC,OAAAA;EAEN,KAAKH,aAAaA;EAClB,KAAKC,SAASA;EACd,KAAKC,yBAAyBA;CAClC;CAEA,MAAME,MAAMC,QAA4B,CAAC,GAAwC;EAC7E,MAAMC,MAAM,KAAKC,SAASF,KAAAA;EAE1B,MAAMG,OAAO,MAAM,KAAKR,WAAWS,OAAO;GACtC,GAAGJ;GACHK,MAAMb,gBAAgBc;GACtBC,KAAK,KAAKC,SAASR,KAAAA;GACnB,GAAIC,MAAM,EAAEA,IAAI,IAAI,CAAC;EACzB,CAAA;EAEA,MAAMQ,QAAQ,MAAM,KAAKb,OAAOc,KAAKP,IAAAA;EAErC,MAAM,KAAKR,WAAWgB,kBAAkBR,MAAMM,KAAAA;EAE9C,IAAI,KAAKZ,0BAA0BM,KAAKS,cAAcT,KAAKU,OAAO,OAAOV,KAAKI,QAAQ,UAClF,MAAM,KAAKV,uBAAuBiB,OAAO;GACrCC,IAAIZ,KAAKU;GACTD,YAAYT,KAAKS;GACjBP,MAAM;GACNW,WAAWhB,MAAMgB,aAAa;GAC9BC,YAAYd,KAAKe,kBAAkB;GACnCC,YAAYhB,KAAKgB,cAAc;GAC/BC,6BAAY,IAAIC,KAAKlB,KAAKI,MAAM,GAAA,EAAA,CAAMe,YAAW;EACrD,CAAA;EAGJ,OAAO,CAACb,OAAON,IAAAA;CACnB;AACJ"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { OAuth2TokenPayload } from '@authup/specs';
|
|
2
2
|
import type { IOAuth2TokenRepository } from '../repository/index.ts';
|
|
3
|
+
import type { ISessionTokenRepository } from '../../session-token/index.ts';
|
|
3
4
|
import type { IOAuth2TokenRevoker } from './types.ts';
|
|
4
5
|
export declare class OAuth2TokenRevoker implements IOAuth2TokenRevoker {
|
|
5
6
|
protected repository: IOAuth2TokenRepository;
|
|
6
|
-
|
|
7
|
+
protected sessionTokenRepository?: ISessionTokenRepository;
|
|
8
|
+
constructor(repository: IOAuth2TokenRepository, sessionTokenRepository?: ISessionTokenRepository);
|
|
7
9
|
revoke(input: OAuth2TokenPayload): Promise<void>;
|
|
8
10
|
}
|
|
9
11
|
//# sourceMappingURL=module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/core/oauth2/token/revoker/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,qBAAa,kBAAmB,YAAW,mBAAmB;IAC1D,SAAS,CAAC,UAAU,EAAG,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/core/oauth2/token/revoker/module.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,qBAAa,kBAAmB,YAAW,mBAAmB;IAC1D,SAAS,CAAC,UAAU,EAAG,sBAAsB,CAAC;IAE9C,SAAS,CAAC,sBAAsB,CAAC,EAAG,uBAAuB,CAAC;gBAGxD,UAAU,EAAG,sBAAsB,EACnC,sBAAsB,CAAC,EAAG,uBAAuB;IAM/C,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAI,OAAO,CAAC,IAAI,CAAC;CAa1D"}
|
|
@@ -5,12 +5,15 @@ import { JWTError } from "@authup/specs";
|
|
|
5
5
|
//#region src/core/oauth2/token/revoker/module.ts
|
|
6
6
|
var OAuth2TokenRevoker = class {
|
|
7
7
|
repository;
|
|
8
|
-
|
|
8
|
+
sessionTokenRepository;
|
|
9
|
+
constructor(repository, sessionTokenRepository) {
|
|
9
10
|
this.repository = repository;
|
|
11
|
+
this.sessionTokenRepository = sessionTokenRepository;
|
|
10
12
|
}
|
|
11
13
|
async revoke(input) {
|
|
12
14
|
if (!input.jti) throw JWTError.payloadPropertyInvalid("jti");
|
|
13
15
|
await this.repository.removeById(input.jti);
|
|
16
|
+
if (this.sessionTokenRepository) await this.sessionTokenRepository.revokeById(input.jti, (/* @__PURE__ */ new Date()).toISOString());
|
|
14
17
|
}
|
|
15
18
|
};
|
|
16
19
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["JWTError","OAuth2TokenRevoker","repository","revoke","input","jti","payloadPropertyInvalid","removeById"],"sources":["../../../../../src/core/oauth2/token/revoker/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { OAuth2TokenPayload } from '@authup/specs';\nimport { JWTError } from '@authup/specs';\nimport type { IOAuth2TokenRepository } from '../repository/index.ts';\nimport type { IOAuth2TokenRevoker } from './types.ts';\n\nexport class OAuth2TokenRevoker implements IOAuth2TokenRevoker {\n protected repository : IOAuth2TokenRepository;\n\n constructor(repository : IOAuth2TokenRepository) {\n this.repository = repository;\n }\n\n async revoke(input: OAuth2TokenPayload) : Promise<void> {\n if (!input.jti) {\n throw JWTError.payloadPropertyInvalid('jti');\n }\n\n await this.repository.removeById(input.jti);\n }\n}\n"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["JWTError","OAuth2TokenRevoker","repository","sessionTokenRepository","revoke","input","jti","payloadPropertyInvalid","removeById","revokeById","Date","toISOString"],"sources":["../../../../../src/core/oauth2/token/revoker/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 { OAuth2TokenPayload } from '@authup/specs';\nimport { JWTError } from '@authup/specs';\nimport type { IOAuth2TokenRepository } from '../repository/index.ts';\nimport type { ISessionTokenRepository } from '../../session-token/index.ts';\nimport type { IOAuth2TokenRevoker } from './types.ts';\n\nexport class OAuth2TokenRevoker implements IOAuth2TokenRevoker {\n protected repository : IOAuth2TokenRepository;\n\n protected sessionTokenRepository? : ISessionTokenRepository;\n\n constructor(\n repository : IOAuth2TokenRepository,\n sessionTokenRepository? : ISessionTokenRepository,\n ) {\n this.repository = repository;\n this.sessionTokenRepository = sessionTokenRepository;\n }\n\n async revoke(input: OAuth2TokenPayload) : Promise<void> {\n if (!input.jti) {\n throw JWTError.payloadPropertyInvalid('jti');\n }\n\n await this.repository.removeById(input.jti);\n\n // Soft-revoke the durable row so a refresh grant (which trusts the row,\n // not the cache blocklist) rejects an explicitly revoked refresh token.\n if (this.sessionTokenRepository) {\n await this.sessionTokenRepository.revokeById(input.jti, new Date().toISOString());\n }\n }\n}\n"],"mappings":";;;;;AAaA,IAAaC,qBAAb,MAAaA;CACCC;CAEAC;CAEV,YACID,YACAC,wBACF;EACE,KAAKD,aAAaA;EAClB,KAAKC,yBAAyBA;CAClC;CAEA,MAAMC,OAAOC,OAA2C;EACpD,IAAI,CAACA,MAAMC,KACP,MAAMN,SAASO,uBAAuB,KAAA;EAG1C,MAAM,KAAKL,WAAWM,WAAWH,MAAMC,GAAG;EAI1C,IAAI,KAAKH,wBACL,MAAM,KAAKA,uBAAuBM,WAAWJ,MAAMC,sBAAK,IAAII,KAAAA,EAAAA,CAAOC,YAAW,CAAA;CAEtF;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/core/oauth2/token/verifier/module.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEjF,qBAAa,mBAAoB,YAAW,oBAAoB;IAC5D,SAAS,CAAC,aAAa,EAAG,oBAAoB,CAAC;IAE/C,SAAS,CAAC,eAAe,EAAG,sBAAsB,CAAC;gBAG/C,aAAa,EAAG,oBAAoB,EACpC,eAAe,EAAG,sBAAsB;IAMtC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAI,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../../src/core/oauth2/token/verifier/module.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEjF,qBAAa,mBAAoB,YAAW,oBAAoB;IAC5D,SAAS,CAAC,aAAa,EAAG,oBAAoB,CAAC;IAE/C,SAAS,CAAC,eAAe,EAAG,sBAAsB,CAAC;gBAG/C,aAAa,EAAG,oBAAoB,EACpC,eAAe,EAAG,sBAAsB;IAMtC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAI,OAAO,CAAC,kBAAkB,CAAC;CA6GpG"}
|
|
@@ -33,7 +33,7 @@ var OAuth2TokenVerifier = class {
|
|
|
33
33
|
payload = await verifyToken(token, {
|
|
34
34
|
type: JWKType.OCT,
|
|
35
35
|
key: key.decryption_key
|
|
36
|
-
});
|
|
36
|
+
}, { ignoreExpiry: options.ignoreExpiry });
|
|
37
37
|
break;
|
|
38
38
|
case JWKType.EC:
|
|
39
39
|
if (!key.encryption_key) throw JWKError.decryptionKeyMissing();
|
|
@@ -41,7 +41,7 @@ var OAuth2TokenVerifier = class {
|
|
|
41
41
|
type: key.type,
|
|
42
42
|
key: key.encryption_key,
|
|
43
43
|
...key.signature_algorithm ? { algorithms: [key.signature_algorithm] } : []
|
|
44
|
-
});
|
|
44
|
+
}, { ignoreExpiry: options.ignoreExpiry });
|
|
45
45
|
break;
|
|
46
46
|
default:
|
|
47
47
|
if (!key.encryption_key) throw JWKError.decryptionKeyMissing();
|
|
@@ -49,10 +49,10 @@ var OAuth2TokenVerifier = class {
|
|
|
49
49
|
type: key.type,
|
|
50
50
|
key: key.encryption_key,
|
|
51
51
|
...key.signature_algorithm ? { algorithms: [key.signature_algorithm] } : []
|
|
52
|
-
});
|
|
52
|
+
}, { ignoreExpiry: options.ignoreExpiry });
|
|
53
53
|
}
|
|
54
54
|
if (!payload.jti) throw JWTError.payloadPropertyInvalid("jti");
|
|
55
|
-
await this.tokenRepository.saveWithSignature(payload, token);
|
|
55
|
+
if (!options.ignoreExpiry) await this.tokenRepository.saveWithSignature(payload, token);
|
|
56
56
|
if (!options.skipActiveCheck) {
|
|
57
57
|
if (await this.isInactive(payload.jti)) throw JWTError.notActive();
|
|
58
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":["extractTokenHeader","verifyToken","JWKError","JWKType","JWTError","OAuth2TokenVerifier","keyRepository","tokenRepository","isInactive","id","verify","token","options","payload","findOneBySignature","jti","payloadPropertyInvalid","skipActiveCheck","notActive","header","kid","headerPropertyInvalid","key","findById","notFound","type","OCT","decryption_key","decryptionKeyMissing","EC","encryption_key","signature_algorithm","algorithms","saveWithSignature"],"sources":["../../../../../src/core/oauth2/token/verifier/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 {\n type TokenECAlgorithm
|
|
1
|
+
{"version":3,"file":"module.mjs","names":["extractTokenHeader","verifyToken","JWKError","JWKType","JWTError","OAuth2TokenVerifier","keyRepository","tokenRepository","isInactive","id","verify","token","options","payload","findOneBySignature","jti","payloadPropertyInvalid","skipActiveCheck","notActive","header","kid","headerPropertyInvalid","key","findById","notFound","type","OCT","decryption_key","decryptionKeyMissing","ignoreExpiry","EC","encryption_key","signature_algorithm","algorithms","saveWithSignature"],"sources":["../../../../../src/core/oauth2/token/verifier/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2025.\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 {\n type TokenECAlgorithm,\n type TokenRSAAlgorithm,\n extractTokenHeader,\n verifyToken,\n} from '@authup/server-kit';\nimport type { OAuth2TokenPayload } from '@authup/specs';\nimport { JWKError, JWKType, JWTError } from '@authup/specs';\nimport type { IOAuth2KeyRepository } from '../../key/index.ts';\nimport type { IOAuth2TokenRepository } from '../repository/types.ts';\nimport type { IOAuth2TokenVerifier, OAuth2TokenVerifyOptions } from './types.ts';\n\nexport class OAuth2TokenVerifier implements IOAuth2TokenVerifier {\n protected keyRepository : IOAuth2KeyRepository;\n\n protected tokenRepository : IOAuth2TokenRepository;\n\n constructor(\n keyRepository : IOAuth2KeyRepository,\n tokenRepository : IOAuth2TokenRepository,\n ) {\n this.keyRepository = keyRepository;\n this.tokenRepository = tokenRepository;\n }\n\n async isInactive(id: string): Promise<boolean> {\n return this.tokenRepository.isInactive(id);\n }\n\n async verify(token: string, options: OAuth2TokenVerifyOptions = {}) : Promise<OAuth2TokenPayload> {\n let payload = await this.tokenRepository.findOneBySignature(token);\n if (payload) {\n if (!payload.jti) {\n throw JWTError.payloadPropertyInvalid('jti');\n }\n\n if (!options.skipActiveCheck) {\n const isInactive = await this.isInactive(payload.jti);\n if (isInactive) {\n throw JWTError.notActive();\n }\n }\n\n return payload;\n }\n\n const header = extractTokenHeader(token);\n if (!header.kid) {\n throw JWTError.headerPropertyInvalid('kid');\n }\n\n const key = await this.keyRepository.findById(header.kid);\n if (!key) {\n throw JWKError.notFound(header.kid);\n }\n\n switch (key.type) {\n case JWKType.OCT: {\n if (!key.decryption_key) {\n throw JWKError.decryptionKeyMissing();\n }\n\n payload = await verifyToken(\n token,\n {\n type: JWKType.OCT,\n key: key.decryption_key,\n },\n { ignoreExpiry: options.ignoreExpiry },\n );\n break;\n }\n case JWKType.EC: {\n if (!key.encryption_key) {\n throw JWKError.decryptionKeyMissing();\n }\n\n payload = await verifyToken(\n token,\n {\n type: key.type,\n key: key.encryption_key,\n ...(\n key.signature_algorithm ?\n { algorithms: [key.signature_algorithm] } :\n []\n ) as TokenECAlgorithm[],\n },\n { ignoreExpiry: options.ignoreExpiry },\n );\n break;\n }\n default: {\n if (!key.encryption_key) {\n throw JWKError.decryptionKeyMissing();\n }\n\n payload = await verifyToken(\n token,\n {\n type: key.type,\n key: key.encryption_key,\n ...(\n key.signature_algorithm ?\n { algorithms: [key.signature_algorithm] } :\n []\n ) as TokenRSAAlgorithm[],\n },\n { ignoreExpiry: options.ignoreExpiry },\n );\n }\n }\n\n if (!payload.jti) {\n throw JWTError.payloadPropertyInvalid('jti');\n }\n\n // Never populate the shared signature-keyed claims cache on the\n // exp-ignoring path. An expired token verified with `ignoreExpiry`\n // (the RP-initiated-logout id_token_hint) would otherwise be re-cached\n // with buildTTL's 1h fallback (a past exp yields a non-positive ttl),\n // and the cache-first branch above returns it with no exp re-check on\n // every subsequent verify — so `/token/introspect` would report an\n // expired token as active for up to an hour (RFC 7662). Keep the\n // exp-bypass scoped to this single call.\n if (!options.ignoreExpiry) {\n await this.tokenRepository.saveWithSignature(payload, token);\n }\n\n if (!options.skipActiveCheck) {\n const isInactive = await this.isInactive(payload.jti);\n if (isInactive) {\n throw JWTError.notActive();\n }\n }\n\n return payload;\n }\n}\n"],"mappings":";;;;;;AAmBA,IAAaK,sBAAb,MAAaA;CACCC;CAEAC;CAEV,YACID,eACAC,iBACF;EACE,KAAKD,gBAAgBA;EACrB,KAAKC,kBAAkBA;CAC3B;CAEA,MAAMC,WAAWC,IAA8B;EAC3C,OAAO,KAAKF,gBAAgBC,WAAWC,EAAAA;CAC3C;CAEA,MAAMC,OAAOC,OAAeC,UAAoC,CAAC,GAAiC;EAC9F,IAAIC,UAAU,MAAM,KAAKN,gBAAgBO,mBAAmBH,KAAAA;EAC5D,IAAIE,SAAS;GACT,IAAI,CAACA,QAAQE,KACT,MAAMX,SAASY,uBAAuB,KAAA;GAG1C,IAAI,CAACJ,QAAQK;QAELT,MADqB,KAAKA,WAAWK,QAAQE,GAAG,GAEhD,MAAMX,SAASc,UAAS;GAAA;GAIhC,OAAOL;EACX;EAEA,MAAMM,SAASnB,mBAAmBW,KAAAA;EAClC,IAAI,CAACQ,OAAOC,KACR,MAAMhB,SAASiB,sBAAsB,KAAA;EAGzC,MAAMC,MAAM,MAAM,KAAKhB,cAAciB,SAASJ,OAAOC,GAAG;EACxD,IAAI,CAACE,KACD,MAAMpB,SAASsB,SAASL,OAAOC,GAAG;EAGtC,QAAQE,IAAIG,MAAZ;GACI,KAAKtB,QAAQuB;IACT,IAAI,CAACJ,IAAIK,gBACL,MAAMzB,SAAS0B,qBAAoB;IAGvCf,UAAU,MAAMZ,YACZU,OACA;KACIc,MAAMtB,QAAQuB;KACdJ,KAAKA,IAAIK;IACb,GACA,EAAEE,cAAcjB,QAAQiB,aAAa,CAAA;IAEzC;GAEJ,KAAK1B,QAAQ2B;IACT,IAAI,CAACR,IAAIS,gBACL,MAAM7B,SAAS0B,qBAAoB;IAGvCf,UAAU,MAAMZ,YACZU,OACA;KACIc,MAAMH,IAAIG;KACVH,KAAKA,IAAIS;KACT,GACIT,IAAIU,sBACA,EAAEC,YAAY,CAACX,IAAIU,mBAAAA,EAAqB,IACxC,CAAA;IAEZ,GACA,EAAEH,cAAcjB,QAAQiB,aAAa,CAAA;IAEzC;GAEJ;IACI,IAAI,CAACP,IAAIS,gBACL,MAAM7B,SAAS0B,qBAAoB;IAGvCf,UAAU,MAAMZ,YACZU,OACA;KACIc,MAAMH,IAAIG;KACVH,KAAKA,IAAIS;KACT,GACIT,IAAIU,sBACA,EAAEC,YAAY,CAACX,IAAIU,mBAAAA,EAAqB,IACxC,CAAA;IAEZ,GACA,EAAEH,cAAcjB,QAAQiB,aAAa,CAAA;EAGjD;EAEA,IAAI,CAAChB,QAAQE,KACT,MAAMX,SAASY,uBAAuB,KAAA;EAW1C,IAAI,CAACJ,QAAQiB,cACT,MAAM,KAAKtB,gBAAgB2B,kBAAkBrB,SAASF,KAAAA;EAG1D,IAAI,CAACC,QAAQK;OAELT,MADqB,KAAKA,WAAWK,QAAQE,GAAG,GAEhD,MAAMX,SAASc,UAAS;EAAA;EAIhC,OAAOL;CACX;AACJ"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { OAuth2TokenPayload } from '@authup/specs';
|
|
2
2
|
export type OAuth2TokenVerifyOptions = {
|
|
3
3
|
skipActiveCheck?: boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Skip ONLY the `exp` check (signature, issuer, nbf still enforced). For
|
|
6
|
+
* verifying an `id_token_hint` on RP-initiated logout, which is routinely
|
|
7
|
+
* expired by the time the user logs out.
|
|
8
|
+
*/
|
|
9
|
+
ignoreExpiry?: boolean;
|
|
4
10
|
};
|
|
5
11
|
export interface IOAuth2TokenVerifier {
|
|
6
12
|
isInactive(token: string): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/core/oauth2/token/verifier/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,MAAM,wBAAwB,GAAG;IACnC,eAAe,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/core/oauth2/token/verifier/types.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,MAAM,wBAAwB,GAAG;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACzB,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACjC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAI,OAAO,CAAC,kBAAkB,CAAC,CAAA;CAC1F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations-validator.d.ts","sourceRoot":"","sources":["../../../../../src/core/provisioning/entities/client/relations-validator.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"relations-validator.d.ts","sourceRoot":"","sources":["../../../../../src/core/provisioning/entities/client/relations-validator.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAKpC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE9D,qBAAa,oCAAqC,SAAQ,SAAS,CAAC,2BAA2B,CAAC;IAC5F,SAAS,CAAC,UAAU;CAkCvB"}
|
|
@@ -5,6 +5,7 @@ import { PermissionProvisioningValidator } from "../permission/validator.mjs";
|
|
|
5
5
|
import "../permission/index.mjs";
|
|
6
6
|
import { RoleProvisioningValidator } from "../role/validator.mjs";
|
|
7
7
|
import "../role/index.mjs";
|
|
8
|
+
import { createProvisioningEntitiesValidator } from "../utils.mjs";
|
|
8
9
|
import { Container } from "validup";
|
|
9
10
|
import { createValidator } from "@validup/zod";
|
|
10
11
|
import { z } from "zod";
|
|
@@ -14,10 +15,10 @@ var ClientProvisioningRelationsValidator = class extends Container {
|
|
|
14
15
|
super.initialize();
|
|
15
16
|
const permissionValidator = new PermissionProvisioningValidator();
|
|
16
17
|
const roleValidator = new RoleProvisioningValidator();
|
|
17
|
-
this.mount("permissions
|
|
18
|
+
this.mount("permissions", { optional: true }, createValidator(z.array(z.any()).check(createProvisioningEntitiesValidator(permissionValidator))));
|
|
18
19
|
this.mount("realmPermissions", { optional: true }, createValidator(z.array(z.string())));
|
|
19
20
|
this.mount("globalPermissions", { optional: true }, createValidator(z.array(z.string())));
|
|
20
|
-
this.mount("roles
|
|
21
|
+
this.mount("roles", { optional: true }, createValidator(z.array(z.any()).check(createProvisioningEntitiesValidator(roleValidator))));
|
|
21
22
|
this.mount("realmRoles", { optional: true }, createValidator(z.array(z.string())));
|
|
22
23
|
this.mount("globalRoles", { optional: true }, createValidator(z.array(z.string())));
|
|
23
24
|
}
|