/// /// import { JSONObject } from "kuzzle-sdk"; import { RoleDefinition, ProfileDefinition } from "../index"; export type SecurityConfiguration = { /** * Debugger configuration */ debug: { /** * Allow to use the Chrome DevTools Protocol directly * through `debug:post` */ native_debug_protocol: boolean; }; /** * The profileIds applied to a user created with the API action * `security:createRestrictedUser`. * * @default ["default"] */ restrictedProfileIds: string[]; /** * @deprecated Use `security.authToken` instead. */ jwt?: JSONObject; /** * Configuration for the npm package jsonwebtoken * who handle Kuzzle Authentication Token. * * @see https://github.com/auth0/node-jsonwebtoken */ authToken: { /** * Hash/encryption method used to sign the token. * * @default "HS256" */ algorithm: string; /** * Token default expiration time. * * @see https://www.npmjs.com/package/ms * * @default "1h" */ expiresIn: string; /** * Duration in ms during which a renewed token is still considered valid. * * @default 1000 */ gracePeriod: number; /** * Maximum duration in milliseconds a token can be requested to be valid. * * If set to -1, no maximum duration is set. * * @default -1 */ maxTTL: number; /** * String or buffer data containing either the secret for HMAC * algorithms, or the PEM encoded private key for RSA and ECDSA. * * If left to null, Kuzzle will autogenerate a random * seed (can only be used with HMAC algorithms). * * @default null */ secret: string | Buffer | null; }; apiKey: { /** * Maximum duration in milliseconds a token can be requested to be valid. * * If set to -1, no maximum duration is set. * * @default -1 */ maxTTL: number; }; /** * The default role defines permissions for all users, * until an administrator configures the backend rights. * * By default, all users are granted all permissions. * * @default * * { * "role": { * "controllers": { * "*": { * "actions": { * "*": true * } * } * } * } * } */ default: { role: RoleDefinition; }; /** * Permissions used when creating an administrator user. * * By default, the admin user is granted all permissions. * * Anonymous and non-administrator users have their rights restricted. * * @default * * { "roles": { "admin": { "controllers": { "*": { "actions": { "*": true } } } }, "default": { "controllers": { "auth": { "actions": { "checkToken": true, "getCurrentUser": true, "getMyRights": true, "logout": true, "updateSelf": true } }, "server": { "actions": { "publicApi": true } } } }, "anonymous": { "controllers": { "auth": { "actions": { "checkToken": true, "getCurrentUser": true, "getMyRights": true, "login": true } }, "server": { "actions": { "publicApi": true, "openapi": true } } } } }, "profiles": { "admin": { "rateLimit": 0, "policies": [ {"roleId": "admin"} ] }, "default": { "rateLimit": 10, "policies": [ {"roleId": "default"} ] }, "anonymous": { "rateLimit": 200, "policies": [ {"roleId": "anonymous"} ] } } } */ standard: { roles: { admin: RoleDefinition; default: RoleDefinition; anonymous: RoleDefinition; [roleName: string]: RoleDefinition; }; profiles: { admin: ProfileDefinition; default: ProfileDefinition; anonymous: ProfileDefinition; [profileName: string]: ProfileDefinition; }; }; };