@jmlq/auth 0.0.1-alpha.1 → 0.0.1-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +259 -306
- package/dist/application/dtos/index.d.ts +3 -0
- package/dist/application/dtos/index.js +19 -0
- package/dist/application/dtos/request/index.d.ts +4 -0
- package/dist/{src/application/dtos → application/dtos/request}/index.js +4 -4
- package/dist/{src/application/dtos/login.dto.d.ts → application/dtos/request/login.request.d.ts} +0 -4
- package/dist/application/dtos/request/logout.request.d.ts +3 -0
- package/dist/application/dtos/request/refresh-token.request.d.ts +3 -0
- package/dist/application/dtos/request/register-user.request.d.ts +6 -0
- package/dist/application/dtos/response/index.d.ts +4 -0
- package/dist/application/dtos/response/index.js +20 -0
- package/dist/application/dtos/response/login.response.d.ts +4 -0
- package/dist/{src/application/dtos/logout.dto.d.ts → application/dtos/response/logout.response.d.ts} +0 -3
- package/dist/{src/application/dtos/refresh-token.dto.d.ts → application/dtos/response/refresh-token.response.d.ts} +0 -3
- package/dist/application/dtos/response/register-user.response.d.ts +7 -0
- package/dist/application/dtos/type/index.d.ts +1 -0
- package/dist/{src/shared/constants → application/dtos/type}/index.js +1 -1
- package/dist/application/dtos/type/user-role.type.d.ts +4 -0
- package/dist/application/factories/auth-service.factory.d.ts +11 -0
- package/dist/application/factories/auth-service.factory.js +40 -0
- package/dist/{src/application → application}/index.d.ts +1 -0
- package/dist/{src/application → application}/index.js +1 -0
- package/dist/application/types/auth-service-factory-options.type.d.ts +5 -0
- package/dist/application/types/index.d.ts +1 -0
- package/dist/{src/infrastructure/jwt/factory → application/types}/index.js +1 -1
- package/dist/{src/application → application}/use-cases/login-with-password.use-case.d.ts +2 -2
- package/dist/{src/application → application}/use-cases/login-with-password.use-case.js +6 -5
- package/dist/{src/application → application}/use-cases/logout.use-case.d.ts +2 -2
- package/dist/{src/application → application}/use-cases/logout.use-case.js +2 -2
- package/dist/{src/application → application}/use-cases/refresh-token.use-case.d.ts +2 -2
- package/dist/{src/application → application}/use-cases/refresh-token.use-case.js +2 -2
- package/dist/application/use-cases/register-user.use-case.d.ts +12 -0
- package/dist/{src/application → application}/use-cases/register-user.use-case.js +27 -1
- package/dist/{src/domain → domain}/errors/auth.errors.d.ts +1 -14
- package/dist/{src/domain → domain}/errors/auth.errors.js +1 -15
- package/dist/{src/domain → domain}/index.d.ts +0 -1
- package/dist/{src/domain → domain}/index.js +0 -1
- package/dist/domain/ports/auth/index.d.ts +2 -0
- package/dist/domain/ports/auth/index.js +18 -0
- package/dist/{src/domain/ports/auth/password-hasher.d.ts → domain/ports/auth/password-hasher.port.d.ts} +1 -1
- package/dist/{src/domain → domain}/ports/auth/password-policy.port.d.ts +1 -1
- package/dist/domain/ports/index.d.ts +4 -0
- package/dist/{src/infrastructure/jwt → domain/ports}/index.js +3 -2
- package/dist/domain/ports/jwt/index.d.ts +1 -0
- package/dist/{src/shared/types → domain/ports/jwt}/index.js +1 -1
- package/dist/domain/ports/jwt/payload/index.d.ts +1 -0
- package/dist/domain/ports/jwt/payload/index.js +17 -0
- package/dist/{src/domain → domain}/ports/repository/credential.repository.d.ts +1 -1
- package/dist/{src/domain → domain}/ports/repository/index.d.ts +1 -1
- package/dist/{src/domain → domain}/ports/repository/index.js +1 -1
- package/dist/{src/domain/ports/repository/user.repository.d.ts → domain/ports/repository/user-repository.port.d.ts} +1 -1
- package/dist/domain/ports/token/index.d.ts +2 -0
- package/dist/domain/ports/token/index.js +18 -0
- package/dist/{src/domain → domain}/ports/token/token-session.port.d.ts +2 -2
- package/dist/{src/domain → domain}/ports/token/token.service.port.d.ts +2 -2
- package/dist/{src/domain → domain}/props/jwt/generate-access-token.props.d.ts +0 -2
- package/dist/{src/domain → domain}/props/jwt/generate-refresh-token.props.d.ts +0 -2
- package/dist/{src/domain/props/services → domain/props/jwt}/index.d.ts +1 -0
- package/dist/{src/domain/props/services → domain/props/jwt}/index.js +1 -0
- package/dist/{src/domain → domain}/services/password-policy.service.d.ts +2 -2
- package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-credential.repository.d.ts +2 -2
- package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-credential.repository.js +12 -2
- package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-user.repository.d.ts +2 -2
- package/dist/index.d.ts +4 -1
- package/dist/index.js +11 -1
- package/dist/infrastructure/index.js +1 -0
- package/dist/{src/infrastructure → infrastructure}/security/bcrypt-password-hasher.d.ts +7 -2
- package/dist/{src/infrastructure → infrastructure}/security/bcrypt-password-hasher.js +7 -2
- package/dist/{src/infrastructure → infrastructure}/services/index.d.ts +0 -1
- package/dist/{src/infrastructure → infrastructure}/services/index.js +0 -1
- package/dist/infrastructure/services/token-session.service.d.ts +22 -0
- package/dist/{src/infrastructure/services/default-token-session.service.js → infrastructure/services/token-session.service.js} +30 -31
- package/dist/infrastructure/types/auth-service-container.d.ts +14 -0
- package/dist/shared/index.d.ts +1 -0
- package/dist/{src/infrastructure/repositories → shared}/index.js +1 -1
- package/package.json +5 -8
- package/dist/examples/bcrypt-password-hasher.example.d.ts +0 -3
- package/dist/examples/bcrypt-password-hasher.example.js +0 -78
- package/dist/examples/entity-object.example.d.ts +0 -39
- package/dist/examples/entity-object.example.js +0 -411
- package/dist/examples/factory-auth-service-example.d.ts +0 -3
- package/dist/examples/factory-auth-service-example.js +0 -84
- package/dist/examples/index.example.d.ts +0 -12
- package/dist/examples/index.example.js +0 -171
- package/dist/examples/jwt-algoritm.example.d.ts +0 -47
- package/dist/examples/jwt-algoritm.example.js +0 -447
- package/dist/examples/jwt-token-generator.example.d.ts +0 -6
- package/dist/examples/jwt-token-generator.example.js +0 -49
- package/dist/examples/jwt-verifier.example.d.ts +0 -3
- package/dist/examples/jwt-verifier.example.js +0 -80
- package/dist/examples/password-policy.example.d.ts +0 -7
- package/dist/examples/password-policy.example.js +0 -57
- package/dist/examples/service-jwt-token.example.d.ts +0 -3
- package/dist/examples/service-jwt-token.example.js +0 -154
- package/dist/examples/service-token-session.example.d.ts +0 -3
- package/dist/examples/service-token-session.example.js +0 -139
- package/dist/examples/use-case-login-with-password.example.d.ts +0 -6
- package/dist/examples/use-case-login-with-password.example.js +0 -105
- package/dist/examples/use-case-logout.example.d.ts +0 -7
- package/dist/examples/use-case-logout.example.js +0 -134
- package/dist/examples/use-case-refresh-token.example.d.ts +0 -11
- package/dist/examples/use-case-refresh-token.example.js +0 -164
- package/dist/examples/use-case-register-user.example.d.ts +0 -9
- package/dist/examples/use-case-register-user.example.js +0 -110
- package/dist/src/application/dtos/index.d.ts +0 -4
- package/dist/src/application/dtos/register-user.dto.d.ts +0 -16
- package/dist/src/application/factories/auth-service.factory.d.ts +0 -5
- package/dist/src/application/factories/auth-service.factory.js +0 -51
- package/dist/src/application/use-cases/register-user.use-case.d.ts +0 -10
- package/dist/src/domain/errors/auth-domain-error.d.ts +0 -82
- package/dist/src/domain/errors/auth-domain-error.js +0 -112
- package/dist/src/domain/ports/auth/password-policy-config.port.js +0 -10
- package/dist/src/domain/ports/config/auth-config.port.d.ts +0 -19
- package/dist/src/domain/ports/config/auth-config.port.js +0 -3
- package/dist/src/domain/ports/index.d.ts +0 -9
- package/dist/src/domain/ports/index.js +0 -25
- package/dist/src/domain/ports/jwt/factory/signature-strategy-factory.port.d.ts +0 -14
- package/dist/src/domain/ports/jwt/signature-strategy-factory.port.d.ts +0 -14
- package/dist/src/domain/ports/jwt/signature-strategy.d.ts +0 -30
- package/dist/src/domain/ports/jwt/signature-strategy.js +0 -4
- package/dist/src/domain/ports/jwt/signature-strategy.port.d.ts +0 -31
- package/dist/src/domain/ports/jwt/signature-strategy.port.js +0 -4
- package/dist/src/domain/ports/jwt/strategy/signature-strategy.port.d.ts +0 -31
- package/dist/src/domain/ports/jwt/strategy/signature-strategy.port.js +0 -4
- package/dist/src/domain/props/create-payload-props.port.d.ts +0 -0
- package/dist/src/domain/props/create-payload-props.port.js +0 -8
- package/dist/src/domain/props/jwt/create-payload.props.d.ts +0 -9
- package/dist/src/domain/props/jwt/generate-token.props.d.ts +0 -10
- package/dist/src/domain/props/jwt/generate-token.props.js +0 -2
- package/dist/src/domain/props/jwt/index.d.ts +0 -5
- package/dist/src/domain/props/jwt/index.js +0 -21
- package/dist/src/domain/props/jwt/jwt-subject.d.ts +0 -7
- package/dist/src/domain/props/jwt/jwt-subject.js +0 -2
- package/dist/src/domain/props/services/generate-access-token.props.d.ts +0 -8
- package/dist/src/domain/props/services/generate-refresh-token.props.d.ts +0 -8
- package/dist/src/domain/services/token.service.port.d.ts +0 -9
- package/dist/src/index.d.ts +0 -78
- package/dist/src/index.js +0 -94
- package/dist/src/infrastructure/index.d.ts +0 -5
- package/dist/src/infrastructure/index.js +0 -21
- package/dist/src/infrastructure/jwt/factory/index.d.ts +0 -1
- package/dist/src/infrastructure/jwt/factory/signature-strategy.factory.d.ts +0 -21
- package/dist/src/infrastructure/jwt/factory/signature-strategy.factory.js +0 -61
- package/dist/src/infrastructure/jwt/index.d.ts +0 -3
- package/dist/src/infrastructure/jwt/signature-strategy.factory.d.ts +0 -21
- package/dist/src/infrastructure/jwt/signature-strategy.factory.js +0 -61
- package/dist/src/infrastructure/jwt/strategies/ecdsa-signature-strategy.d.ts +0 -47
- package/dist/src/infrastructure/jwt/strategies/ecdsa-signature-strategy.js +0 -124
- package/dist/src/infrastructure/jwt/strategies/ecdsa-signature.strategy.d.ts +0 -47
- package/dist/src/infrastructure/jwt/strategies/ecdsa-signature.strategy.js +0 -124
- package/dist/src/infrastructure/jwt/strategies/hmac-signature-strategy.d.ts +0 -54
- package/dist/src/infrastructure/jwt/strategies/hmac-signature-strategy.js +0 -129
- package/dist/src/infrastructure/jwt/strategies/hmac-signature.strategy.d.ts +0 -54
- package/dist/src/infrastructure/jwt/strategies/hmac-signature.strategy.js +0 -129
- package/dist/src/infrastructure/jwt/strategies/index.d.ts +0 -3
- package/dist/src/infrastructure/jwt/strategies/index.js +0 -19
- package/dist/src/infrastructure/jwt/strategies/rsa-signature-strategy.d.ts +0 -47
- package/dist/src/infrastructure/jwt/strategies/rsa-signature-strategy.js +0 -124
- package/dist/src/infrastructure/jwt/strategies/rsa-signature.strategy.d.ts +0 -47
- package/dist/src/infrastructure/jwt/strategies/rsa-signature.strategy.js +0 -124
- package/dist/src/infrastructure/jwt/token/actions/jwt-token-generator.d.ts +0 -57
- package/dist/src/infrastructure/jwt/token/actions/jwt-token-generator.js +0 -123
- package/dist/src/infrastructure/jwt/token/actions/jwt-token-verifier.d.ts +0 -59
- package/dist/src/infrastructure/jwt/token/actions/jwt-token-verifier.js +0 -100
- package/dist/src/infrastructure/jwt/token/index.d.ts +0 -5
- package/dist/src/infrastructure/jwt/token/index.js +0 -21
- package/dist/src/infrastructure/jwt/token/jwt-signer.d.ts +0 -33
- package/dist/src/infrastructure/jwt/token/jwt-signer.js +0 -46
- package/dist/src/infrastructure/jwt/token/jwt-token-parser.d.ts +0 -29
- package/dist/src/infrastructure/jwt/token/jwt-token-parser.js +0 -57
- package/dist/src/infrastructure/jwt/token/jwt-token-validator.d.ts +0 -32
- package/dist/src/infrastructure/jwt/token/jwt-token-validator.js +0 -77
- package/dist/src/infrastructure/jwt/token/tools/jwt-signer.d.ts +0 -33
- package/dist/src/infrastructure/jwt/token/tools/jwt-signer.js +0 -46
- package/dist/src/infrastructure/jwt/token/tools/jwt-token-parser.d.ts +0 -30
- package/dist/src/infrastructure/jwt/token/tools/jwt-token-parser.js +0 -57
- package/dist/src/infrastructure/jwt/token/tools/jwt-token-validator.d.ts +0 -32
- package/dist/src/infrastructure/jwt/token/tools/jwt-token-validator.js +0 -77
- package/dist/src/infrastructure/repositories/index.d.ts +0 -1
- package/dist/src/infrastructure/repositories/test/in-memory-token-session.repository.d.ts +0 -67
- package/dist/src/infrastructure/repositories/test/in-memory-token-session.repository.js +0 -128
- package/dist/src/infrastructure/services/default-token-session.service.d.ts +0 -18
- package/dist/src/infrastructure/services/jwt-token.service.d.ts +0 -15
- package/dist/src/infrastructure/services/jwt-token.service.js +0 -44
- package/dist/src/infrastructure/services/simple-jwt-token.service.d.ts +0 -15
- package/dist/src/infrastructure/services/simple-jwt-token.service.js +0 -46
- package/dist/src/infrastructure/services/token-session.service.d.ts +0 -24
- package/dist/src/infrastructure/services/token-session.service.js +0 -131
- package/dist/src/infrastructure/types/auth-service-container.d.ts +0 -14
- package/dist/src/shared/constants/index.d.ts +0 -1
- package/dist/src/shared/constants/jwt-algorithms.d.ts +0 -17
- package/dist/src/shared/constants/jwt-algorithms.js +0 -23
- package/dist/src/shared/encoders/base64-url-encoder.d.ts +0 -29
- package/dist/src/shared/encoders/base64-url-encoder.js +0 -45
- package/dist/src/shared/encoders/index.d.ts +0 -1
- package/dist/src/shared/encoders/index.js +0 -17
- package/dist/src/shared/index.d.ts +0 -4
- package/dist/src/shared/index.js +0 -20
- package/dist/src/shared/types/index.d.ts +0 -1
- package/dist/src/shared/types/jwt.d.ts +0 -25
- package/dist/src/shared/types/jwt.js +0 -2
- package/dist/src/shared/types/jwt.types.d.ts +0 -39
- package/dist/src/shared/types/jwt.types.js +0 -2
- package/dist/tests/application/factory/auth-service-factory.spec.d.ts +0 -1
- package/dist/tests/application/factory/auth-service-factory.spec.js +0 -97
- package/dist/tests/application/use-cases/login-with-password.integration.spec.d.ts +0 -1
- package/dist/tests/application/use-cases/login-with-password.integration.spec.js +0 -140
- package/dist/tests/application/use-cases/logout-use-case.spec.d.ts +0 -1
- package/dist/tests/application/use-cases/logout-use-case.spec.js +0 -40
- package/dist/tests/application/use-cases/refresh-token-use-case.spec.d.ts +0 -1
- package/dist/tests/application/use-cases/refresh-token-use-case.spec.js +0 -116
- package/dist/tests/application/use-cases/register-user.usecase.spec.d.ts +0 -1
- package/dist/tests/application/use-cases/register-user.usecase.spec.js +0 -151
- package/dist/tests/domain/entities/credential.spec.d.ts +0 -1
- package/dist/tests/domain/entities/credential.spec.js +0 -93
- package/dist/tests/domain/entities/user.spec.d.ts +0 -1
- package/dist/tests/domain/entities/user.spec.js +0 -93
- package/dist/tests/domain/object-values/email.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/email.spec.js +0 -77
- package/dist/tests/domain/object-values/hashed-password.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/hashed-password.spec.js +0 -54
- package/dist/tests/domain/object-values/id.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/id.spec.js +0 -48
- package/dist/tests/domain/object-values/permission.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/permission.spec.js +0 -75
- package/dist/tests/domain/object-values/role.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/role.spec.js +0 -139
- package/dist/tests/domain/services/default-password-policy.spec.d.ts +0 -1
- package/dist/tests/domain/services/default-password-policy.spec.js +0 -69
- package/dist/tests/doman/entities/credential.spec.d.ts +0 -1
- package/dist/tests/doman/entities/credential.spec.js +0 -93
- package/dist/tests/doman/entities/user.spec.d.ts +0 -1
- package/dist/tests/doman/entities/user.spec.js +0 -93
- package/dist/tests/doman/object-values/email.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/email.spec.js +0 -77
- package/dist/tests/doman/object-values/hashed-password.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/hashed-password.spec.js +0 -54
- package/dist/tests/doman/object-values/id.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/id.spec.js +0 -48
- package/dist/tests/doman/object-values/permission.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/permission.spec.js +0 -75
- package/dist/tests/doman/object-values/role.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/role.spec.js +0 -139
- package/dist/tests/helpers/make-jwt-subject.d.ts +0 -7
- package/dist/tests/helpers/make-jwt-subject.js +0 -16
- package/dist/tests/helpers/make-jwt-user.d.ts +0 -7
- package/dist/tests/helpers/make-jwt-user.js +0 -16
- package/dist/tests/helpers/make-user.d.ts +0 -2
- package/dist/tests/helpers/make-user.js +0 -15
- package/dist/tests/infrastructure/jwt/signature-strategy-factory.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/signature-strategy-factory.spec.js +0 -127
- package/dist/tests/infrastructure/jwt/strategies/ecdsa-signature-strategy.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/strategies/ecdsa-signature-strategy.spec.js +0 -157
- package/dist/tests/infrastructure/jwt/strategies/hmac-signature-strategy.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/strategies/hmac-signature-strategy.spec.js +0 -150
- package/dist/tests/infrastructure/jwt/strategies/rsa-signature-strategy..spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/strategies/rsa-signature-strategy..spec.js +0 -156
- package/dist/tests/infrastructure/jwt/token/actions/jwt-token-generator.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/actions/jwt-token-generator.spec.js +0 -179
- package/dist/tests/infrastructure/jwt/token/actions/jwt-token-verifier.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/actions/jwt-token-verifier.spec.js +0 -142
- package/dist/tests/infrastructure/jwt/token/jwt-signer.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/jwt-signer.spec.js +0 -125
- package/dist/tests/infrastructure/jwt/token/jwt-token-parser.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/jwt-token-parser.spec.js +0 -116
- package/dist/tests/infrastructure/jwt/token/jwt-token-validator.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/jwt-token-validator.spec.js +0 -88
- package/dist/tests/infrastructure/jwt/token/tools/jwt-signer.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/tools/jwt-signer.spec.js +0 -126
- package/dist/tests/infrastructure/jwt/token/tools/jwt-token-parser.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/tools/jwt-token-parser.spec.js +0 -116
- package/dist/tests/infrastructure/jwt/token/tools/jwt-token-validator.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/tools/jwt-token-validator.spec.js +0 -88
- package/dist/tests/infrastructure/security/security/bcrypt-password-hasher.spec.d.ts +0 -1
- package/dist/tests/infrastructure/security/security/bcrypt-password-hasher.spec.js +0 -37
- package/dist/tests/infrastructure/services/jwt-token-service.spec.d.ts +0 -1
- package/dist/tests/infrastructure/services/jwt-token-service.spec.js +0 -145
- package/dist/tests/infrastructure/services/token-session.service.spec.d.ts +0 -1
- package/dist/tests/infrastructure/services/token-session.service.spec.js +0 -269
- package/dist/tests/shared/constants/jwt-algorithms.spec.d.ts +0 -1
- package/dist/tests/shared/constants/jwt-algorithms.spec.js +0 -27
- package/dist/tests/shared/encoders/base64-url-encoder.spec.d.ts +0 -1
- package/dist/tests/shared/encoders/base64-url-encoder.spec.js +0 -70
- package/dist/tests/shared/utils/time-parser.spec.d.ts +0 -1
- package/dist/tests/shared/utils/time-parser.spec.js +0 -80
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -17
- package/dist/utils/time-parser.d.ts +0 -28
- package/dist/utils/time-parser.js +0 -76
- /package/dist/{src/application/dtos/login.dto.js → application/dtos/request/login.request.js} +0 -0
- /package/dist/{src/application/dtos/logout.dto.js → application/dtos/request/logout.request.js} +0 -0
- /package/dist/{src/application/dtos/refresh-token.dto.js → application/dtos/request/refresh-token.request.js} +0 -0
- /package/dist/{src/application/dtos/register-user.dto.js → application/dtos/request/register-user.request.js} +0 -0
- /package/dist/{src/domain/ports/auth/password-hasher.js → application/dtos/response/login.response.js} +0 -0
- /package/dist/{src/domain/ports/auth/password-policy.port.js → application/dtos/response/logout.response.js} +0 -0
- /package/dist/{src/domain/ports/jwt/factory/signature-strategy-factory.port.js → application/dtos/response/refresh-token.response.js} +0 -0
- /package/dist/{src/domain/ports/jwt/payload/jwt-payload.port.js → application/dtos/response/register-user.response.js} +0 -0
- /package/dist/{src/domain/ports/jwt/signature-strategy-factory.port.js → application/dtos/type/user-role.type.js} +0 -0
- /package/dist/{src/application → application}/factories/index.d.ts +0 -0
- /package/dist/{src/application → application}/factories/index.js +0 -0
- /package/dist/{src/domain/ports/repository/credential.repository.js → application/types/auth-service-factory-options.type.js} +0 -0
- /package/dist/{src/application → application}/use-cases/index.d.ts +0 -0
- /package/dist/{src/application → application}/use-cases/index.js +0 -0
- /package/dist/{src/domain → domain}/entities/credential.entity.d.ts +0 -0
- /package/dist/{src/domain → domain}/entities/credential.entity.js +0 -0
- /package/dist/{src/domain → domain}/entities/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/entities/index.js +0 -0
- /package/dist/{src/domain → domain}/entities/user.entity.d.ts +0 -0
- /package/dist/{src/domain → domain}/entities/user.entity.js +0 -0
- /package/dist/{src/domain → domain}/errors/identity.errors.d.ts +0 -0
- /package/dist/{src/domain → domain}/errors/identity.errors.js +0 -0
- /package/dist/{src/domain → domain}/errors/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/errors/index.js +0 -0
- /package/dist/{src/domain → domain}/object-values/email.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/email.js +0 -0
- /package/dist/{src/domain → domain}/object-values/hashed-password.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/hashed-password.js +0 -0
- /package/dist/{src/domain → domain}/object-values/id.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/id.js +0 -0
- /package/dist/{src/domain → domain}/object-values/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/index.js +0 -0
- /package/dist/{src/domain → domain}/object-values/permission.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/permission.js +0 -0
- /package/dist/{src/domain → domain}/object-values/role.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/role.js +0 -0
- /package/dist/{src/domain/ports/repository/user.repository.js → domain/ports/auth/password-hasher.port.js} +0 -0
- /package/dist/{src/domain/ports/token/token-session.port.js → domain/ports/auth/password-policy.port.js} +0 -0
- /package/dist/{src/domain → domain}/ports/jwt/payload/jwt-payload.port.d.ts +0 -0
- /package/dist/{src/domain/ports/token/token.service.port.js → domain/ports/jwt/payload/jwt-payload.port.js} +0 -0
- /package/dist/{src/domain/props/entities/credential.props.js → domain/ports/repository/credential.repository.js} +0 -0
- /package/dist/{src/domain/props/entities/user.props.js → domain/ports/repository/user-repository.port.js} +0 -0
- /package/dist/{src/domain/props/jwt/create-payload.props.js → domain/ports/token/token-session.port.js} +0 -0
- /package/dist/{src/domain/services → domain/ports/token}/token.service.port.js +0 -0
- /package/dist/{src/domain → domain}/props/entities/credential.props.d.ts +0 -0
- /package/dist/{src/domain/props/jwt/generate-access-token.props.js → domain/props/entities/credential.props.js} +0 -0
- /package/dist/{src/domain → domain}/props/entities/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/props/entities/index.js +0 -0
- /package/dist/{src/domain → domain}/props/entities/user.props.d.ts +0 -0
- /package/dist/{src/domain/props/jwt/generate-refresh-token.props.js → domain/props/entities/user.props.js} +0 -0
- /package/dist/{src/domain → domain}/props/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/props/index.js +0 -0
- /package/dist/{src/domain/props/services → domain/props/jwt}/generate-access-token.props.js +0 -0
- /package/dist/{src/domain/props/services → domain/props/jwt}/generate-refresh-token.props.js +0 -0
- /package/dist/{src/domain → domain}/props/jwt/jwt-user.d.ts +0 -0
- /package/dist/{src/domain → domain}/props/jwt/jwt-user.js +0 -0
- /package/dist/{src/domain → domain}/services/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/services/index.js +0 -0
- /package/dist/{src/domain → domain}/services/password-policy.service.js +0 -0
- /package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-user.repository.js +0 -0
- /package/dist/{src/infrastructure/repositories/test → in-memory}/index.d.ts +0 -0
- /package/dist/{src/infrastructure/repositories/test → in-memory}/index.js +0 -0
- /package/dist/{src/domain/ports/auth/password-policy-config.port.d.ts → infrastructure/index.d.ts} +0 -0
- /package/dist/{src/infrastructure → infrastructure}/security/index.d.ts +0 -0
- /package/dist/{src/infrastructure → infrastructure}/security/index.js +0 -0
- /package/dist/{src/infrastructure → infrastructure}/types/auth-service-container.js +0 -0
- /package/dist/{src/infrastructure → infrastructure}/types/index.d.ts +0 -0
- /package/dist/{src/infrastructure → infrastructure}/types/index.js +0 -0
- /package/dist/{src/shared → shared}/utils/index.d.ts +0 -0
- /package/dist/{src/shared → shared}/utils/index.js +0 -0
- /package/dist/{src/shared → shared}/utils/time-parser.d.ts +0 -0
- /package/dist/{src/shared → shared}/utils/time-parser.js +0 -0
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MainExample = void 0;
|
|
4
|
-
const bcrypt_password_hasher_example_1 = require("./bcrypt-password-hasher.example");
|
|
5
|
-
const entity_object_example_1 = require("./entity-object.example");
|
|
6
|
-
const factory_auth_service_example_1 = require("./factory-auth-service-example");
|
|
7
|
-
const jwt_algoritm_example_1 = require("./jwt-algoritm.example");
|
|
8
|
-
const jwt_token_generator_example_1 = require("./jwt-token-generator.example");
|
|
9
|
-
const jwt_verifier_example_1 = require("./jwt-verifier.example");
|
|
10
|
-
const password_policy_example_1 = require("./password-policy.example");
|
|
11
|
-
const service_jwt_token_example_1 = require("./service-jwt-token.example");
|
|
12
|
-
const use_case_login_with_password_example_1 = require("./use-case-login-with-password.example");
|
|
13
|
-
const use_case_logout_example_1 = require("./use-case-logout.example");
|
|
14
|
-
const use_case_refresh_token_example_1 = require("./use-case-refresh-token.example");
|
|
15
|
-
const use_case_register_user_example_1 = require("./use-case-register-user.example");
|
|
16
|
-
class MainExample {
|
|
17
|
-
async runEntityObjectExamples() {
|
|
18
|
-
console.log("-".repeat(80) + "\n");
|
|
19
|
-
console.log("🎯 Ejecutando Jwt: Signature:\n");
|
|
20
|
-
await entity_object_example_1.EntityObjectExamples.Main();
|
|
21
|
-
console.log("-".repeat(80) + "\n");
|
|
22
|
-
}
|
|
23
|
-
async runJwtAlgoritmExamples() {
|
|
24
|
-
console.log("-".repeat(80) + "\n");
|
|
25
|
-
console.log("🎯 Ejecutando Jwt: Signature:\n");
|
|
26
|
-
await jwt_algoritm_example_1.JwtAlgoritmExample.Main();
|
|
27
|
-
console.log("-".repeat(80) + "\n");
|
|
28
|
-
}
|
|
29
|
-
async runJwtTokenGeneratorExamples() {
|
|
30
|
-
console.log("-".repeat(80) + "\n");
|
|
31
|
-
console.log("🎯 Ejecutando Jwt: Token Generator:\n");
|
|
32
|
-
await jwt_token_generator_example_1.JwtTokenGeneratorExample.Main();
|
|
33
|
-
console.log("-".repeat(80) + "\n");
|
|
34
|
-
}
|
|
35
|
-
async runExampleJwtVerifier() {
|
|
36
|
-
console.log("-".repeat(80) + "\n");
|
|
37
|
-
console.log("🎯 Ejecutando Jwt: Validar Token:\n");
|
|
38
|
-
await jwt_verifier_example_1.JwtVerifierExample.Main();
|
|
39
|
-
console.log("-".repeat(80) + "\n");
|
|
40
|
-
}
|
|
41
|
-
async runExamplePasswordValidations() {
|
|
42
|
-
console.log("-".repeat(80) + "\n");
|
|
43
|
-
console.log("🎯 Ejecutando Validaciones Password\n");
|
|
44
|
-
await password_policy_example_1.PasswordPolicyExample.Main();
|
|
45
|
-
console.log("-".repeat(80) + "\n");
|
|
46
|
-
console.log("🎯 Ejecutando Hasher\n");
|
|
47
|
-
await bcrypt_password_hasher_example_1.BcryptPasswordHasherExample.Main();
|
|
48
|
-
console.log("-".repeat(80) + "\n");
|
|
49
|
-
}
|
|
50
|
-
async runExampleUseCases() {
|
|
51
|
-
console.log("-".repeat(80) + "\n");
|
|
52
|
-
console.log("🎯 Ejecutando Use Case: Register:\n");
|
|
53
|
-
await use_case_register_user_example_1.UseCaseRegisterUserExample.Main();
|
|
54
|
-
console.log("-".repeat(80) + "\n");
|
|
55
|
-
console.log("🎯 Ejecutando Use Case: Login with password:\n");
|
|
56
|
-
await use_case_login_with_password_example_1.UseCaseLoginWithPasswordExample.Main();
|
|
57
|
-
console.log("-".repeat(80) + "\n");
|
|
58
|
-
console.log("🎯 Ejecutando Use Case: Logout:\n");
|
|
59
|
-
await use_case_logout_example_1.UseCaseLogoutExample.Main();
|
|
60
|
-
console.log("-".repeat(80) + "\n");
|
|
61
|
-
console.log("🎯 Ejecutando Use Case: Refresh Token:\n");
|
|
62
|
-
await use_case_refresh_token_example_1.UseCaseRefreshTokenExample.Main();
|
|
63
|
-
console.log("-".repeat(80) + "\n");
|
|
64
|
-
}
|
|
65
|
-
//
|
|
66
|
-
async runExampleServices() {
|
|
67
|
-
console.log("-".repeat(80) + "\n");
|
|
68
|
-
console.log("🎯 Ejecutando Service: Jwt Token:\n");
|
|
69
|
-
await service_jwt_token_example_1.JwtTokenServiceExample.Main();
|
|
70
|
-
console.log("-".repeat(80) + "\n");
|
|
71
|
-
console.log("🎯 Ejecutando Service: Token Session:\n");
|
|
72
|
-
await service_jwt_token_example_1.JwtTokenServiceExample.Main();
|
|
73
|
-
console.log("-".repeat(80) + "\n");
|
|
74
|
-
}
|
|
75
|
-
async runExampleFactories() {
|
|
76
|
-
console.log("-".repeat(80) + "\n");
|
|
77
|
-
console.log("🎯 Ejecutando Factory: Auth Service:\n");
|
|
78
|
-
await factory_auth_service_example_1.AuthServiceFactoryExample.Main();
|
|
79
|
-
console.log("-".repeat(80) + "\n");
|
|
80
|
-
}
|
|
81
|
-
async runAllExamples() {
|
|
82
|
-
try {
|
|
83
|
-
console.log("-".repeat(80) + "\n");
|
|
84
|
-
console.log("🚀 Entities and Object Values - Ejemplos Completos\n");
|
|
85
|
-
await this.runEntityObjectExamples();
|
|
86
|
-
console.log("-".repeat(80) + "\n");
|
|
87
|
-
console.log("🚀 JWT Auth Package - Ejemplos Completos\n");
|
|
88
|
-
await this.runJwtAlgoritmExamples();
|
|
89
|
-
console.log("-".repeat(80) + "\n");
|
|
90
|
-
console.log("🚀 Generate Token - Ejemplos Completos\n");
|
|
91
|
-
await this.runJwtTokenGeneratorExamples();
|
|
92
|
-
console.log("-".repeat(80) + "\n");
|
|
93
|
-
console.log("🚀 Validate Token - Ejemplos Completos\n");
|
|
94
|
-
await this.runExampleJwtVerifier();
|
|
95
|
-
console.log("-".repeat(80) + "\n");
|
|
96
|
-
console.log("🚀 Password Validations - Ejemplos Completos\n");
|
|
97
|
-
await this.runExamplePasswordValidations();
|
|
98
|
-
console.log("-".repeat(80) + "\n");
|
|
99
|
-
console.log("🚀 Use Cases - Ejemplos Completos\n");
|
|
100
|
-
await this.runExampleUseCases();
|
|
101
|
-
console.log("-".repeat(80) + "\n");
|
|
102
|
-
console.log("🚀 Services - Ejemplos Completos\n");
|
|
103
|
-
await this.runExampleServices();
|
|
104
|
-
console.log("-".repeat(80) + "\n");
|
|
105
|
-
console.log("🚀 Factories - Ejemplos Completos\n");
|
|
106
|
-
await this.runExampleFactories();
|
|
107
|
-
console.log("-".repeat(80) + "\n");
|
|
108
|
-
console.log("🎉 ¡Todos los ejemplos completados exitosamente!");
|
|
109
|
-
console.log("\n📚 Para más información consulta el README.md");
|
|
110
|
-
console.log("-".repeat(80) + "\n");
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
console.error("❌ Error ejecutando ejemplos:", error);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
exports.MainExample = MainExample;
|
|
118
|
-
// Función de ayuda para mostrar opciones
|
|
119
|
-
function showHelp() {
|
|
120
|
-
console.log("📖 JWT Auth Package - Ejemplos Disponibles\n");
|
|
121
|
-
console.log("Comandos disponibles:");
|
|
122
|
-
console.log(" npm run example:jwt - Ejemplos uso jwt");
|
|
123
|
-
console.log(" npm run example:entity - Ejemplos uso entity y value objects");
|
|
124
|
-
console.log(" npm run example:generate-token - Ejemplos uso generate-token");
|
|
125
|
-
console.log(" npm run example:validate-token - Ejemplos uso validate-token");
|
|
126
|
-
console.log(" npm run example:use-cases - Ejemplos uso use-cases");
|
|
127
|
-
console.log(" npm run example:validate-password - Ejemplos uso validate-password");
|
|
128
|
-
console.log(" npm run example:services - Ejemplos uso services");
|
|
129
|
-
console.log(" npm run example:factories - Ejemplos uso factories");
|
|
130
|
-
console.log(" npm run example:all - Todos los ejemplos");
|
|
131
|
-
console.log("\nO ejecuta directamente:");
|
|
132
|
-
console.log(" tsx examples/jwt.examples.ts");
|
|
133
|
-
console.log(" tsx examples/index.example.ts");
|
|
134
|
-
}
|
|
135
|
-
// Ejecutar según el argumento
|
|
136
|
-
if (require.main === module) {
|
|
137
|
-
const mainExample = new MainExample();
|
|
138
|
-
const command = process.argv[2];
|
|
139
|
-
switch (command) {
|
|
140
|
-
case "entity":
|
|
141
|
-
mainExample.runEntityObjectExamples();
|
|
142
|
-
break;
|
|
143
|
-
case "jwt":
|
|
144
|
-
mainExample.runJwtAlgoritmExamples();
|
|
145
|
-
break;
|
|
146
|
-
case "generate-token":
|
|
147
|
-
mainExample.runJwtTokenGeneratorExamples();
|
|
148
|
-
break;
|
|
149
|
-
case "validate-token":
|
|
150
|
-
mainExample.runExampleJwtVerifier();
|
|
151
|
-
break;
|
|
152
|
-
case "validate-password":
|
|
153
|
-
mainExample.runExamplePasswordValidations();
|
|
154
|
-
break;
|
|
155
|
-
case "use-cases":
|
|
156
|
-
mainExample.runExampleUseCases();
|
|
157
|
-
break;
|
|
158
|
-
case "services":
|
|
159
|
-
mainExample.runExampleServices();
|
|
160
|
-
break;
|
|
161
|
-
case "factories":
|
|
162
|
-
mainExample.runExampleFactories();
|
|
163
|
-
break;
|
|
164
|
-
case "help":
|
|
165
|
-
showHelp();
|
|
166
|
-
break;
|
|
167
|
-
default:
|
|
168
|
-
mainExample.runAllExamples();
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
exports.default = MainExample;
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ejemplo demostrativo de uso de EcdsaSignatureStrategy.
|
|
3
|
-
* Incluye la generación de claves, firma y verificación de un token JWT.
|
|
4
|
-
*/
|
|
5
|
-
export declare class JwtAlgoritmExample {
|
|
6
|
-
/**
|
|
7
|
-
* Sección Signature: demuestra el flujo completo de firma y verificación
|
|
8
|
-
* usando ECDSA (curva P-256 → algoritmo ES256).
|
|
9
|
-
*/
|
|
10
|
-
static Main(): Promise<void>;
|
|
11
|
-
/**
|
|
12
|
-
* Sección HMAC: demuestra la generación de un secret para HMAC.
|
|
13
|
-
*/
|
|
14
|
-
static RunHmac(): Promise<void>;
|
|
15
|
-
/**
|
|
16
|
-
* Sección ECDSA: demuestra el flujo completo de firma y verificación
|
|
17
|
-
* usando ECDSA (curva P-256 → algoritmo ES256).
|
|
18
|
-
*/
|
|
19
|
-
static RunEcdsa(): Promise<void>;
|
|
20
|
-
/**
|
|
21
|
-
* Sección RSA: demuestra el flujo completo de firma y verificación
|
|
22
|
-
* usando RSA (2048 bits → algoritmo RS256).
|
|
23
|
-
*/
|
|
24
|
-
static RunRsa(): Promise<void>;
|
|
25
|
-
/**
|
|
26
|
-
* Ejemplo demostrativo de uso de SignatureStrategyFactory.
|
|
27
|
-
* Permite crear estrategias de firma/verificación según el algoritmo indicado.
|
|
28
|
-
*/
|
|
29
|
-
static RunFactory(): Promise<void>;
|
|
30
|
-
/**
|
|
31
|
-
* Ejemplo demostrativo de uso de JwtTokenValidator.
|
|
32
|
-
* Permite verificar tokens JWT y mostrar su validez según reglas de formato, estructura y caracteres.
|
|
33
|
-
*/
|
|
34
|
-
static RunJwtTokenValidator(): Promise<void>;
|
|
35
|
-
/**
|
|
36
|
-
* Ejemplo demostrativo de uso de JwtTokenParser.
|
|
37
|
-
* Permite extraer, decodificar y validar el contenido de un JWT
|
|
38
|
-
* sin verificar su firma ni validez temporal.
|
|
39
|
-
*/
|
|
40
|
-
static RunJwtTokenParser(): Promise<void>;
|
|
41
|
-
/**
|
|
42
|
-
* Ejemplo demostrativo de uso de JwtSigner.
|
|
43
|
-
* Muestra cómo firmar y verificar el contenido de un JWT
|
|
44
|
-
* usando estrategias criptográficas provistas por SignatureStrategyFactory.
|
|
45
|
-
*/
|
|
46
|
-
static RunJwtSigner(): Promise<void>;
|
|
47
|
-
}
|
|
@@ -1,447 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.JwtAlgoritmExample = void 0;
|
|
37
|
-
const crypto = __importStar(require("crypto"));
|
|
38
|
-
const errors_1 = require("../src/domain/errors");
|
|
39
|
-
const jwt_1 = require("../src/infrastructure/jwt");
|
|
40
|
-
const constants_1 = require("../src/shared/constants");
|
|
41
|
-
const encoders_1 = require("../src/shared/encoders");
|
|
42
|
-
/**
|
|
43
|
-
* Ejemplo demostrativo de uso de EcdsaSignatureStrategy.
|
|
44
|
-
* Incluye la generación de claves, firma y verificación de un token JWT.
|
|
45
|
-
*/
|
|
46
|
-
class JwtAlgoritmExample {
|
|
47
|
-
/**
|
|
48
|
-
* Sección Signature: demuestra el flujo completo de firma y verificación
|
|
49
|
-
* usando ECDSA (curva P-256 → algoritmo ES256).
|
|
50
|
-
*/
|
|
51
|
-
static async Main() {
|
|
52
|
-
// Ejemplos de firma y verificación
|
|
53
|
-
await this.RunEcdsa();
|
|
54
|
-
await this.RunHmac();
|
|
55
|
-
await this.RunRsa();
|
|
56
|
-
// Ejemplo de fábrica de estrategias
|
|
57
|
-
await this.RunFactory();
|
|
58
|
-
// Generar Token JWT
|
|
59
|
-
await this.RunJwtTokenValidator();
|
|
60
|
-
// Parsear Token JWT
|
|
61
|
-
await this.RunJwtTokenParser();
|
|
62
|
-
// Firmar y verificar Token JWT
|
|
63
|
-
await this.RunJwtSigner();
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Sección HMAC: demuestra la generación de un secret para HMAC.
|
|
67
|
-
*/
|
|
68
|
-
static async RunHmac() {
|
|
69
|
-
console.log("=== 🔐 Ejemplo: Firma y verificación HMAC ===\n");
|
|
70
|
-
// 1️⃣ Generamos un Secret
|
|
71
|
-
console.log("→ Generando Secret HMAC...");
|
|
72
|
-
const makeSecret = (length = 32) => crypto.randomBytes(length).toString("base64url");
|
|
73
|
-
const secret = makeSecret();
|
|
74
|
-
console.log("Secret:\n", secret);
|
|
75
|
-
// 2️⃣ Creamos los datos a firmar (header + payload en formato JWT)
|
|
76
|
-
const header = { alg: "HS256", typ: "JWT" };
|
|
77
|
-
const payload = { sub: "1234567890", name: "John Doe", iat: 1516239022 };
|
|
78
|
-
const encoder = new encoders_1.Base64UrlEncoder();
|
|
79
|
-
const encodedHeader = encoder.encode(Buffer.from(JSON.stringify(header)).toString("base64"));
|
|
80
|
-
const encodedPayload = encoder.encode(Buffer.from(JSON.stringify(payload)).toString("base64"));
|
|
81
|
-
const data = `${encodedHeader}.${encodedPayload}`;
|
|
82
|
-
console.log("\n→ Datos a firmar (header.payload):");
|
|
83
|
-
console.log(data);
|
|
84
|
-
// 3️⃣ Instanciamos la estrategia HMAC
|
|
85
|
-
const strategy = new jwt_1.HmacSignatureStrategy(constants_1.algorithms.hmac.HS256, encoder);
|
|
86
|
-
console.log("\n→ Estrategia configurada con algoritmo:", strategy.getSupportedAlgorithm());
|
|
87
|
-
// 4️⃣ Firmamos los datos con la clave privada
|
|
88
|
-
console.log("\n→ Firmando datos...");
|
|
89
|
-
const signature = strategy.sign(data, secret);
|
|
90
|
-
console.log("Firma generada (Base64URL):", signature);
|
|
91
|
-
// 5️⃣ Verificamos la firma con la clave pública
|
|
92
|
-
console.log("\n→ Verificando firma...");
|
|
93
|
-
const isValid = strategy.verify(data, signature, secret);
|
|
94
|
-
console.log("¿Firma válida?", isValid);
|
|
95
|
-
// 6️⃣ Prueba negativa: modificamos el payload
|
|
96
|
-
console.log("\n→ Verificando firma con payload alterado...");
|
|
97
|
-
const tamperedData = data + "xxx";
|
|
98
|
-
const isTamperedValid = strategy.verify(tamperedData, signature, secret);
|
|
99
|
-
console.log("¿Firma válida tras alteración?", isTamperedValid);
|
|
100
|
-
console.log("\n=== ✅ Fin del ejemplo HMAC ===");
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Sección ECDSA: demuestra el flujo completo de firma y verificación
|
|
104
|
-
* usando ECDSA (curva P-256 → algoritmo ES256).
|
|
105
|
-
*/
|
|
106
|
-
static async RunEcdsa() {
|
|
107
|
-
console.log("=== 🔐 Ejemplo: Firma y verificación ECDSA ===\n");
|
|
108
|
-
// 1️⃣ Generamos un par de claves (curva P-256 para ES256)
|
|
109
|
-
console.log("→ Generando claves ECDSA (P-256)...");
|
|
110
|
-
const { publicKey, privateKey } = crypto.generateKeyPairSync("ec", {
|
|
111
|
-
namedCurve: "P-256",
|
|
112
|
-
publicKeyEncoding: { type: "spki", format: "pem" },
|
|
113
|
-
privateKeyEncoding: { type: "pkcs8", format: "pem" },
|
|
114
|
-
});
|
|
115
|
-
console.log("Clave privada:\n", privateKey);
|
|
116
|
-
console.log("Clave pública:\n", publicKey);
|
|
117
|
-
// 2️⃣ Creamos los datos a firmar (header + payload en formato JWT)
|
|
118
|
-
const header = { alg: "ES256", typ: "JWT" };
|
|
119
|
-
const payload = { sub: "1234567890", name: "John Doe", iat: 1516239022 };
|
|
120
|
-
const encoder = new encoders_1.Base64UrlEncoder();
|
|
121
|
-
const encodedHeader = encoder.encode(Buffer.from(JSON.stringify(header)).toString("base64"));
|
|
122
|
-
const encodedPayload = encoder.encode(Buffer.from(JSON.stringify(payload)).toString("base64"));
|
|
123
|
-
const data = `${encodedHeader}.${encodedPayload}`;
|
|
124
|
-
console.log("\n→ Datos a firmar (header.payload):");
|
|
125
|
-
console.log(data);
|
|
126
|
-
// 3️⃣ Instanciamos la estrategia ECDSA
|
|
127
|
-
const strategy = new jwt_1.EcdsaSignatureStrategy(constants_1.algorithms.ecdsa.ES256, encoder);
|
|
128
|
-
console.log("\n→ Estrategia configurada con algoritmo:", strategy.getSupportedAlgorithm());
|
|
129
|
-
// 4️⃣ Firmamos los datos con la clave privada
|
|
130
|
-
console.log("\n→ Firmando datos...");
|
|
131
|
-
const signature = strategy.sign(data, privateKey);
|
|
132
|
-
console.log("Firma generada (Base64URL):", signature);
|
|
133
|
-
// 5️⃣ Verificamos la firma con la clave pública
|
|
134
|
-
console.log("\n→ Verificando firma...");
|
|
135
|
-
const isValid = strategy.verify(data, signature, publicKey);
|
|
136
|
-
console.log("¿Firma válida?", isValid);
|
|
137
|
-
// 6️⃣ Prueba negativa: modificamos el payload
|
|
138
|
-
console.log("\n→ Verificando firma con payload alterado...");
|
|
139
|
-
const tamperedData = data + "xxx";
|
|
140
|
-
const isTamperedValid = strategy.verify(tamperedData, signature, publicKey);
|
|
141
|
-
console.log("¿Firma válida tras alteración?", isTamperedValid);
|
|
142
|
-
console.log("\n=== ✅ Fin del ejemplo ECDSA ===");
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Sección RSA: demuestra el flujo completo de firma y verificación
|
|
146
|
-
* usando RSA (2048 bits → algoritmo RS256).
|
|
147
|
-
*/
|
|
148
|
-
static async RunRsa() {
|
|
149
|
-
console.log("=== 🔐 Ejemplo: Firma y verificación RSA ===\n");
|
|
150
|
-
// 1️⃣ Generamos un par de claves (2048 bits para RS256)
|
|
151
|
-
console.log("→ Generando claves RSA (P-256)...");
|
|
152
|
-
const { publicKey, privateKey } = crypto.generateKeyPairSync("rsa", {
|
|
153
|
-
modulusLength: 2048,
|
|
154
|
-
publicKeyEncoding: { type: "spki", format: "pem" },
|
|
155
|
-
privateKeyEncoding: { type: "pkcs8", format: "pem" },
|
|
156
|
-
});
|
|
157
|
-
console.log("Clave privada:\n", privateKey);
|
|
158
|
-
console.log("Clave pública:\n", publicKey);
|
|
159
|
-
// 2️⃣ Creamos los datos a firmar (header + payload en formato JWT)
|
|
160
|
-
const header = { alg: "RS256", typ: "JWT" };
|
|
161
|
-
const payload = { sub: "1234567890", name: "John Doe", iat: 1516239022 };
|
|
162
|
-
const encoder = new encoders_1.Base64UrlEncoder();
|
|
163
|
-
const encodedHeader = encoder.encode(Buffer.from(JSON.stringify(header)).toString("base64"));
|
|
164
|
-
const encodedPayload = encoder.encode(Buffer.from(JSON.stringify(payload)).toString("base64"));
|
|
165
|
-
const data = `${encodedHeader}.${encodedPayload}`;
|
|
166
|
-
console.log("\n→ Datos a firmar (header.payload):");
|
|
167
|
-
console.log(data);
|
|
168
|
-
// 3️⃣ Instanciamos la estrategia ECDSA
|
|
169
|
-
const strategy = new jwt_1.RsaSignatureStrategy(constants_1.algorithms.rsa.RS256, encoder);
|
|
170
|
-
console.log("\n→ Estrategia configurada con algoritmo:", strategy.getSupportedAlgorithm());
|
|
171
|
-
// 4️⃣ Firmamos los datos con la clave privada
|
|
172
|
-
console.log("\n→ Firmando datos...");
|
|
173
|
-
const signature = strategy.sign(data, privateKey);
|
|
174
|
-
console.log("Firma generada (Base64URL):", signature);
|
|
175
|
-
// 5️⃣ Verificamos la firma con la clave pública
|
|
176
|
-
console.log("\n→ Verificando firma...");
|
|
177
|
-
const isValid = strategy.verify(data, signature, publicKey);
|
|
178
|
-
console.log("¿Firma válida?", isValid);
|
|
179
|
-
// 6️⃣ Prueba negativa: modificamos el payload
|
|
180
|
-
console.log("\n→ Verificando firma con payload alterado...");
|
|
181
|
-
const tamperedData = data + "xxx";
|
|
182
|
-
const isTamperedValid = strategy.verify(tamperedData, signature, publicKey);
|
|
183
|
-
console.log("¿Firma válida tras alteración?", isTamperedValid);
|
|
184
|
-
console.log("\n=== ✅ Fin del ejemplo RSA ===");
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Ejemplo demostrativo de uso de SignatureStrategyFactory.
|
|
188
|
-
* Permite crear estrategias de firma/verificación según el algoritmo indicado.
|
|
189
|
-
*/
|
|
190
|
-
static async RunFactory() {
|
|
191
|
-
console.log("=== 🧪 SignatureStrategyFactory Example ===\n");
|
|
192
|
-
const encoder = new encoders_1.Base64UrlEncoder();
|
|
193
|
-
const factory = new jwt_1.SignatureStrategyFactory(encoder);
|
|
194
|
-
// 1️⃣ Mostrar algoritmos soportados
|
|
195
|
-
console.log("→ Algoritmos soportados:");
|
|
196
|
-
console.log(factory.supported());
|
|
197
|
-
console.log("");
|
|
198
|
-
// 2️⃣ Crear estrategia HMAC
|
|
199
|
-
try {
|
|
200
|
-
const alg = constants_1.algorithms.hmac.HS256;
|
|
201
|
-
const hmac = factory.create(alg);
|
|
202
|
-
console.log(`✅ Creada estrategia HMAC (${alg}):`, hmac.constructor.name);
|
|
203
|
-
}
|
|
204
|
-
catch (err) {
|
|
205
|
-
console.error("❌ Error creando HMAC:", err);
|
|
206
|
-
}
|
|
207
|
-
// 3️⃣ Crear estrategia RSA
|
|
208
|
-
try {
|
|
209
|
-
const alg = constants_1.algorithms.rsa.RS256;
|
|
210
|
-
const rsa = factory.create(alg);
|
|
211
|
-
console.log(`✅ Creada estrategia RSA (${alg}):`, rsa.constructor.name);
|
|
212
|
-
}
|
|
213
|
-
catch (err) {
|
|
214
|
-
console.error("❌ Error creando RSA:", err);
|
|
215
|
-
}
|
|
216
|
-
// 4️⃣ Crear estrategia ECDSA
|
|
217
|
-
try {
|
|
218
|
-
const alg = constants_1.algorithms.ecdsa.ES256;
|
|
219
|
-
const ecdsa = factory.create(alg);
|
|
220
|
-
console.log(`✅ Creada estrategia ECDSA (${alg}):`, ecdsa.constructor.name);
|
|
221
|
-
}
|
|
222
|
-
catch (err) {
|
|
223
|
-
console.error("❌ Error creando ECDSA:", err);
|
|
224
|
-
}
|
|
225
|
-
// 5️⃣ Intentar un algoritmo no soportado
|
|
226
|
-
try {
|
|
227
|
-
const alg = "PS256"; // PSS aún no soportado
|
|
228
|
-
const unsupported = factory.create(alg);
|
|
229
|
-
console.log(`❌ Esto no debería imprimirse: ${unsupported}`);
|
|
230
|
-
}
|
|
231
|
-
catch (err) {
|
|
232
|
-
if (err instanceof errors_1.UnsupportedAlgorithmError) {
|
|
233
|
-
console.warn(`⚠️ Algoritmo no soportado (${err.message})`);
|
|
234
|
-
}
|
|
235
|
-
else {
|
|
236
|
-
console.error("❌ Error inesperado:", err);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
console.log("\n=== ✅ Fin del ejemplo SignatureStrategyFactory===");
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Ejemplo demostrativo de uso de JwtTokenValidator.
|
|
243
|
-
* Permite verificar tokens JWT y mostrar su validez según reglas de formato, estructura y caracteres.
|
|
244
|
-
*/
|
|
245
|
-
static async RunJwtTokenValidator() {
|
|
246
|
-
console.log("=== 🧪 JwtTokenValidator Example ===\n");
|
|
247
|
-
// 1️⃣ Crear instancia del validador
|
|
248
|
-
const validator = new jwt_1.JwtTokenValidator();
|
|
249
|
-
// 2️⃣ Definir conjunto de casos de prueba (válidos e inválidos)
|
|
250
|
-
const validJwt = "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk";
|
|
251
|
-
const cases = [
|
|
252
|
-
// ✅ Casos válidos
|
|
253
|
-
{ name: "Válido: JWT realista", token: validJwt, expectOk: true },
|
|
254
|
-
{
|
|
255
|
-
name: "Válido: 2 puntos y Base64URL",
|
|
256
|
-
token: "abc_DEF-123.ghi_JKL-456.mno_PQR-789xyz",
|
|
257
|
-
expectOk: true,
|
|
258
|
-
},
|
|
259
|
-
// 🚫 Casos inválidos de formato básico
|
|
260
|
-
{ name: "Null", token: null, expectOk: false },
|
|
261
|
-
{ name: "Undefined", token: undefined, expectOk: false },
|
|
262
|
-
{ name: "No string (number)", token: 123, expectOk: false },
|
|
263
|
-
{ name: "Cadena vacía", token: "", expectOk: false },
|
|
264
|
-
{ name: "Solo espacios", token: " ", expectOk: false },
|
|
265
|
-
{
|
|
266
|
-
name: "Espacios al inicio/fin",
|
|
267
|
-
token: " abc.def.ghi ",
|
|
268
|
-
expectOk: false,
|
|
269
|
-
},
|
|
270
|
-
// 🚫 Casos inválidos de estructura (puntos / longitud)
|
|
271
|
-
{ name: "Demasiado corto (<10)", token: "a.b.c", expectOk: false },
|
|
272
|
-
{ name: "0 puntos", token: "abcdefghijk", expectOk: false },
|
|
273
|
-
{ name: "1 punto", token: "abcdefghij.klmnop", expectOk: false },
|
|
274
|
-
{ name: "3 puntos", token: "abcd.efgh.ijkl.mnop", expectOk: false },
|
|
275
|
-
// 🚫 Casos inválidos de caracteres Base64URL
|
|
276
|
-
{
|
|
277
|
-
name: "Contiene '+'",
|
|
278
|
-
token: "abcde+123.fghi_JKL.mnop-QR",
|
|
279
|
-
expectOk: false,
|
|
280
|
-
},
|
|
281
|
-
{
|
|
282
|
-
name: "Contiene '/'",
|
|
283
|
-
token: "abcde/123.fghi_JKL.mnop-QR",
|
|
284
|
-
expectOk: false,
|
|
285
|
-
},
|
|
286
|
-
{
|
|
287
|
-
name: "Contiene '=' (padding)",
|
|
288
|
-
token: "abcde=123.fghi_JKL.mnop-QR",
|
|
289
|
-
expectOk: false,
|
|
290
|
-
},
|
|
291
|
-
{
|
|
292
|
-
name: "Segmento vacío (..)",
|
|
293
|
-
token: "abcde..klmnopqr",
|
|
294
|
-
expectOk: false,
|
|
295
|
-
},
|
|
296
|
-
{
|
|
297
|
-
name: "Espacio interno",
|
|
298
|
-
token: "abcde .fghi_JKL.mnop-QR",
|
|
299
|
-
expectOk: false,
|
|
300
|
-
},
|
|
301
|
-
{
|
|
302
|
-
name: "Caracter '%'",
|
|
303
|
-
token: "abcde%.fghi_JKL.mnop-QR",
|
|
304
|
-
expectOk: false,
|
|
305
|
-
},
|
|
306
|
-
];
|
|
307
|
-
console.log("→ Casos de prueba preparados:", cases.length, "\n");
|
|
308
|
-
// 3️⃣ Ejecutar la validación de cada token
|
|
309
|
-
let passed = 0;
|
|
310
|
-
for (const c of cases) {
|
|
311
|
-
let ok = false;
|
|
312
|
-
let message;
|
|
313
|
-
try {
|
|
314
|
-
// 3.1 Intentar validar el token
|
|
315
|
-
validator.validateTokenInput(c.token);
|
|
316
|
-
ok = true;
|
|
317
|
-
}
|
|
318
|
-
catch (err) {
|
|
319
|
-
// 3.2 Capturar errores esperados (InvalidTokenFormatError)
|
|
320
|
-
if (err instanceof errors_1.InvalidTokenFormatError) {
|
|
321
|
-
ok = false;
|
|
322
|
-
message = err.message;
|
|
323
|
-
}
|
|
324
|
-
else {
|
|
325
|
-
// 3.3 Capturar cualquier error inesperado
|
|
326
|
-
ok = false;
|
|
327
|
-
message = `Unexpected error: ${err?.message}`;
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
// 4️⃣ Mostrar el resultado por caso
|
|
331
|
-
const pass = ok === c.expectOk;
|
|
332
|
-
const status = pass ? "✔ PASS" : "✖ FAIL";
|
|
333
|
-
const outcome = ok ? "VALID" : `INVALID → ${message}`;
|
|
334
|
-
console.log(`${status} ${c.name}\n` +
|
|
335
|
-
` token: ${String(c.token)}\n` +
|
|
336
|
-
` result: ${outcome}\n`);
|
|
337
|
-
if (pass)
|
|
338
|
-
passed++;
|
|
339
|
-
}
|
|
340
|
-
// 5️⃣ Mostrar resumen final
|
|
341
|
-
const total = cases.length;
|
|
342
|
-
console.log(`\n=== ✅ Resumen JwtTokenValidator ===`);
|
|
343
|
-
console.log(`Casos superados: ${passed}/${total}`);
|
|
344
|
-
console.log("===================================\n");
|
|
345
|
-
}
|
|
346
|
-
/**
|
|
347
|
-
* Ejemplo demostrativo de uso de JwtTokenParser.
|
|
348
|
-
* Permite extraer, decodificar y validar el contenido de un JWT
|
|
349
|
-
* sin verificar su firma ni validez temporal.
|
|
350
|
-
*/
|
|
351
|
-
static async RunJwtTokenParser() {
|
|
352
|
-
console.log("=== 🧪 JwtTokenParser Example ===\n");
|
|
353
|
-
// 1️⃣ Crear una instancia del codificador Base64URL y del parser
|
|
354
|
-
const encoder = new encoders_1.Base64UrlEncoder();
|
|
355
|
-
const parser = new jwt_1.JwtTokenParser(encoder);
|
|
356
|
-
console.log("→ Instancia de JwtTokenParser creada correctamente.\n");
|
|
357
|
-
// 2️⃣ Definir un JWT de ejemplo con header, payload y signature
|
|
358
|
-
const header = encoder.encode(JSON.stringify({ alg: "HS256", typ: "JWT" }));
|
|
359
|
-
const payload = encoder.encode(JSON.stringify({ sub: "12345", role: "admin", exp: 1700000000 }));
|
|
360
|
-
const signature = "signatureExamplePart";
|
|
361
|
-
const token = `${header}.${payload}.${signature}`;
|
|
362
|
-
console.log("→ Token de ejemplo generado:");
|
|
363
|
-
console.log(token + "\n");
|
|
364
|
-
// 3️⃣ Extraer las partes del token (header, payload, signature)
|
|
365
|
-
const [h, p, s] = parser.extractParts(token);
|
|
366
|
-
console.log("→ Partes extraídas del token:");
|
|
367
|
-
console.log(" Header:", h);
|
|
368
|
-
console.log(" Payload:", p);
|
|
369
|
-
console.log(" Signature:", s, "\n");
|
|
370
|
-
// 4️⃣ Decodificar y parsear el payload sin validar
|
|
371
|
-
try {
|
|
372
|
-
const decoded = parser.parsePayload(token);
|
|
373
|
-
console.log("✅ Payload decodificado (sin validación):");
|
|
374
|
-
console.log(decoded, "\n");
|
|
375
|
-
}
|
|
376
|
-
catch (err) {
|
|
377
|
-
console.error("❌ Error al decodificar el payload:", err, "\n");
|
|
378
|
-
}
|
|
379
|
-
// 5️⃣ Validar estrictamente el payload (debe ser JSON válido y tipo objeto)
|
|
380
|
-
try {
|
|
381
|
-
const strictPayload = parser.parseAndValidatePayload(p);
|
|
382
|
-
console.log("✅ Payload validado correctamente:");
|
|
383
|
-
console.log(strictPayload, "\n");
|
|
384
|
-
}
|
|
385
|
-
catch (err) {
|
|
386
|
-
if (err instanceof errors_1.InvalidTokenFormatError) {
|
|
387
|
-
console.warn(`⚠️ Token inválido: ${err.message}\n`);
|
|
388
|
-
}
|
|
389
|
-
else {
|
|
390
|
-
console.error("❌ Error inesperado:", err, "\n");
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
// 6️⃣ Probar con un payload inválido para mostrar el control de errores
|
|
394
|
-
const badPayload = encoder.encode("not-json-text");
|
|
395
|
-
try {
|
|
396
|
-
parser.parseAndValidatePayload(badPayload);
|
|
397
|
-
console.log("❌ Esto no debería imprimirse: el payload es inválido.");
|
|
398
|
-
}
|
|
399
|
-
catch (err) {
|
|
400
|
-
console.warn("⚠️ Ejemplo de error capturado correctamente:");
|
|
401
|
-
console.warn(err.message, "\n");
|
|
402
|
-
}
|
|
403
|
-
// 7️⃣ Resumen final
|
|
404
|
-
console.log("=== ✅ Fin del ejemplo JwtTokenParser ===");
|
|
405
|
-
}
|
|
406
|
-
/**
|
|
407
|
-
* Ejemplo demostrativo de uso de JwtSigner.
|
|
408
|
-
* Muestra cómo firmar y verificar el contenido de un JWT
|
|
409
|
-
* usando estrategias criptográficas provistas por SignatureStrategyFactory.
|
|
410
|
-
*/
|
|
411
|
-
static async RunJwtSigner() {
|
|
412
|
-
console.log("=== 🧪 JwtSigner Example ===\n");
|
|
413
|
-
// 1️⃣ Crear el codificador Base64URL y la instancia de JwtSigner
|
|
414
|
-
const encoder = new encoders_1.Base64UrlEncoder();
|
|
415
|
-
const signer = new jwt_1.JwtSigner(encoder);
|
|
416
|
-
console.log("→ Instancia de JwtSigner creada correctamente.\n");
|
|
417
|
-
// 2️⃣ Definir los datos base del JWT (header.payload)
|
|
418
|
-
const header = encoder.encode(JSON.stringify({ alg: "HS256", typ: "JWT" }));
|
|
419
|
-
const payload = encoder.encode(JSON.stringify({ sub: "12345", role: "admin" }));
|
|
420
|
-
const data = `${header}.${payload}`;
|
|
421
|
-
console.log("→ Datos a firmar (header.payload):");
|
|
422
|
-
console.log(data, "\n");
|
|
423
|
-
// 3️⃣ Definir una clave secreta y el algoritmo a usar
|
|
424
|
-
const key = "mi-clave-secreta-supersegura";
|
|
425
|
-
const algorithm = constants_1.algorithms.hmac.HS256;
|
|
426
|
-
console.log(`→ Algoritmo seleccionado: ${algorithm}`);
|
|
427
|
-
console.log(`→ Clave: ${key}\n`);
|
|
428
|
-
// 4️⃣ Firmar los datos usando el algoritmo seleccionado
|
|
429
|
-
try {
|
|
430
|
-
const signature = signer.sign(data, key, algorithm);
|
|
431
|
-
console.log("✅ Firma generada correctamente:");
|
|
432
|
-
console.log(signature, "\n");
|
|
433
|
-
// 5️⃣ Verificar la firma generada
|
|
434
|
-
const isValid = signer.verifySignature(data, signature, key, algorithm);
|
|
435
|
-
console.log(`→ Resultado de verificación con clave correcta: ${isValid ? "válida ✅" : "inválida ❌"}\n`);
|
|
436
|
-
// 6️⃣ Probar verificación con una clave incorrecta
|
|
437
|
-
const isInvalid = signer.verifySignature(data, signature, "otra-clave", algorithm);
|
|
438
|
-
console.log(`→ Resultado de verificación con clave incorrecta: ${isInvalid ? "válida ❌" : "inválida ✅"}\n`);
|
|
439
|
-
}
|
|
440
|
-
catch (err) {
|
|
441
|
-
console.error("❌ Error al firmar o verificar:", err, "\n");
|
|
442
|
-
}
|
|
443
|
-
// 7️⃣ Resumen final
|
|
444
|
-
console.log("=== ✅ Fin del ejemplo JwtSigner ===");
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
exports.JwtAlgoritmExample = JwtAlgoritmExample;
|