AUTH_VALIDATION_SCHEMA |
Type : object
|
Default value : {
OIDC: Joi.string().optional(),
KEYCLOAK_INTERNAL_ISSUER_URL: Joi.when('OIDC', {
then: Joi.string().required(),
otherwise: Joi.string().optional(),
}),
KEYCLOAK_CLIENT_ID: Joi.when('OIDC', {
then: Joi.string().required(),
otherwise: Joi.string().optional(),
}),
JWT_SECRET: Joi.when('OIDC', {
then: Joi.string().optional(),
otherwise: Joi.string().required(),
}),
JWT_ISSUER: Joi.when('OIDC', {
then: Joi.string().optional(),
otherwise: Joi.string().optional().default('eudiplo-service'),
}),
JWT_EXPIRES_IN: Joi.when('OIDC', {
then: Joi.string().optional(),
otherwise: Joi.string().default('24h'),
}),
AUTH_CLIENT_SECRET: Joi.when('OIDC', {
then: Joi.string().optional(),
otherwise: Joi.string().required(),
}),
AUTH_CLIENT_ID: Joi.when('OIDC', {
then: Joi.string().optional(),
otherwise: Joi.string().required(),
}),
}
|
CRYPTO_VALIDATION_SCHEMA |
Type : object
|
Default value : {
CRYPTO_ALG: Joi.string().valid('ES256').default('ES256'),
}
|
DB_VALIDATION_SCHEMA |
Type : object
|
Default value : {
DB_TYPE: Joi.string().valid('sqlite', 'postgres').default('sqlite'),
DB_HOST: Joi.string().when('DB_TYPE', {
is: 'sqlite',
then: Joi.optional(),
otherwise: Joi.required(),
}),
DB_PORT: Joi.number().when('DB_TYPE', {
is: 'sqlite',
then: Joi.optional(),
otherwise: Joi.required(),
}),
DB_USERNAME: Joi.string().when('DB_TYPE', {
is: 'sqlite',
then: Joi.optional(),
otherwise: Joi.required(),
}),
DB_PASSWORD: Joi.string().when('DB_TYPE', {
is: 'sqlite',
then: Joi.optional(),
otherwise: Joi.required(),
}),
DB_DATABASE: Joi.string().when('DB_TYPE', {
is: 'sqlite',
then: Joi.optional(),
otherwise: Joi.required(),
}),
}
|
ED25519 |
Type : CryptoImplementation
|
Default value : {
alg: 'EdDSA',
async generateKeyPair() {
const keyPair = await crypto.webcrypto.subtle.generateKey(
{
name: 'EdDSA',
namedCurve: 'Ed25519',
},
true,
['sign', 'verify'],
);
const publicKey = await crypto.webcrypto.subtle.exportKey(
'jwk',
keyPair.publicKey,
);
const privateKey = await crypto.webcrypto.subtle.exportKey(
'jwk',
keyPair.privateKey,
);
return { publicKey, privateKey };
},
async getSigner(privateKeyJWK: object) {
const privateKey = await crypto.webcrypto.subtle.importKey(
'jwk',
privateKeyJWK,
{
name: 'EdDSA',
namedCurve: 'Ed25519',
},
false,
['sign'],
);
return async (data: string) => {
const signature = await crypto.webcrypto.subtle.sign(
'EdDSA',
privateKey,
new TextEncoder().encode(data),
);
return Buffer.from(signature).toString('base64url');
};
},
async getVerifier(publicKeyJWK: object) {
const publicKey = await crypto.webcrypto.subtle.importKey(
'jwk',
publicKeyJWK,
{
name: 'EdDSA',
namedCurve: 'Ed25519',
},
false,
['verify'],
);
return async (data: string, signatureBase64url: string) => {
const signature = Buffer.from(signatureBase64url, 'base64url');
const isVerified = await crypto.webcrypto.subtle.verify(
'EdDSA',
publicKey,
signature,
new TextEncoder().encode(data),
);
return isVerified;
};
},
}
|
IS_PUBLIC_KEY |
Type : string
|
Default value : 'isPublic'
|
Public |
Default value : () => SetMetadata(IS_PUBLIC_KEY, true)
|
ISSUER_VALIDATION_SCHEMA |
Type : object
|
Default value : {
PUBLIC_URL: Joi.string(),
}
|
KEY_VALIDATION_SCHEMA |
Type : object
|
Default value : {
KM_TYPE: Joi.string().valid('file', 'vault').default('file'),
// Vault-related config
VAULT_URL: Joi.string().uri().when('KM_TYPE', {
is: 'vault',
then: Joi.required(),
otherwise: Joi.optional(),
}),
VAULT_TOKEN: Joi.string().when('KM_TYPE', {
is: 'vault',
then: Joi.required(),
otherwise: Joi.optional(),
}),
}
|
REGISTRAR_VALIDATION_SCHEMA |
Type : object
|
Default value : {
REGISTRAR_URL: Joi.string(),
REGISTRAR_OIDC_URL: Joi.string().when('REGISTRAR_URL', {
is: Joi.exist(),
then: Joi.required(),
}),
REGISTRAR_OIDC_CLIENT_ID: Joi.string().when('REGISTRAR_URL', {
is: Joi.exist(),
then: Joi.required(),
}),
REGISTRAR_OIDC_CLIENT_SECRET: Joi.string().when('REGISTRAR_URL', {
is: Joi.exist(),
then: Joi.required(),
}),
}
|
Validation schema for the registrar module. Defines the required environment variables and their types. |
SESSION_LOGGER_KEY |
Type : string
|
Default value : 'session-logger'
|
Key for session logger metadata. |
SESSION_VALIDATION_SCHEMA |
Type : object
|
Default value : {
SESSION_TIDY_UP_INTERVAL: Joi.number().default(60 * 60), // default to every hour
SESSION_TTL: Joi.number().default(24 * 60 * 60), // default to 24 hours
}
|
Module for managing user sessions. |
SessionEntity |
Default value : createParamDecorator(
(data: unknown, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest();
return request.session as Session;
},
)
|