Class: AuthToken

@nginstack/engine/lib/security/AuthToken~ AuthToken


new AuthToken(scope [, data] [, offlineAuth])

Esta classe é responsável por gerar um token de autorização para ser executado posteriormente em um outro script. O token de autorização é um mecanismo que permite o usuário do sistema delegar uma autorização de login para uso posterior ou em outro Engine. Com a posse do token, um script pode "logar" na sessão em nome do usuário que autorizou o token.

Tokens de autorização apresentam as seguintes vantagens em relação ao uso de credenciais:

  1. Eles não expõem a senha do usuário em variáveis de ambientes, códigos-fontes ou parametrizações.
  2. Eles podem ser revogados de forma individual pelo usuário.
  3. Eles podem ser configurados para ter um escopo de utilização mais restrito que o do usuário, limitando assim o seu uso e os riscos do token ser interceptado e utilizado para outros fins.

O escopo de um token de autorização é configurado por meio de uma lista de identificadores separada por espaço. Via de regra, os escopos são identificadores opacos para o Engine e o desenvolvedor pode livremente defini-los. A validação e tratamento desses escopos deve ser implementadas pos APIs de mais alto nível que utilizem o token de autorização. No entanto, há dois formatos especiais que são interpretados e validados diretamente pelo Engine. São eles:

  • 'vfs:ikey?<CHAVE>'
  • 'ufs:<path>'

Escopos com prefixos vfs: ou ufs: definem os scripts autorizados a utilizarem o token. O método module:@nginstack/engine/lib/session/Session~Session#loginByAuthToken falhará se o script que realizou o login não satisfizer ao menos um dos scripts autorizados por meio desses escopos. Como os identificadores de escopos não podem conter espaços, é recomendado que esses caracteres sejam removidos do caminho do script utilizando a função escape.

Após um token ter sido criado, ele deve ser autorizado através dos métodos module:@nginstack/engine/lib/security/Security~Security#authorizeToken ou module:@nginstack/engine/lib/session/Session~Session#authorizeToken.

Um token de autorização pode ser atualizado através do método module:@nginstack/engine/lib/security/Security~Security#updateAuthToken onde é permitido alterar as suas propriedades.

Caso um token não seja mais desejado, ele pode ser revogado através do método module:@nginstack/engine/lib/security/Security~Security#revokeAuthToken.

Parameters:
Name Type Argument Description
scope string | Array.<string> | number | DBKey

Lista separada por espaço dos identificadores dos escopos de uso autorizados por este token. Caso seja informado um Array, ele será unificado pelo método join(' ') e convertido em uma lista. Para fins de compatibilidade, é permitido que seja informada uma URI ou chave de um script em vez da relação dos escopos. Nesse caso, o valor informado será interpretado como um escopo de esquema vfs: ou ufs:.

data string <optional>

Dados opcionais vinculados ao token.

offlineAuth boolean <optional>

Indica se o token poderá ser utilizado off-line. Atualmente não é possível criar tokens offline, apenas é possível autenticar/restaurar token criados enquanto a conexão ainda está online.

See:
Examples
// Authorize multiple scopes
const AuthToken = require('@nginstack/engine/lib/security/AuthToken');
const token = new AuthToken('console.read console.write console.admin');
token.description = 'Console API';
token.expires = new Date(Date.now() + 10 * Duration.DAY_MS);
session.authorizeToken(token);
// Authorize multiple scripts
const AuthToken = require('@nginstack/engine/lib/security/AuthToken');
const token = new AuthToken([
  scriptKey,
  'ufs:' + escape(scriptPath)
]);
token.description = 'Atualização de valores relativos aos produtos.';
token.expires = new Date(Date.now() + 10 * Duration.DAY_MS);
session.authorizeToken(token);
// Authorize a VFS script
const AuthToken = require('@nginstack/engine/lib/security/AuthToken');
const token = new AuthToken(AUTHORIZED_SCRIPT_KEY, '{num: 10}', false);
token.description = 'Atualização de valores relativos aos produtos.';
token.expires = new Date(Date.now() + 10 * Duration.DAY_MS);
session.authorizeToken(token);

Members


data :string

Dados vinculados ao token.

Type:
  • string

description :string

Descrição que indique o propósito de utilização deste token.

Type:
  • string

expires :Date

Data de validade deste token. Caso este valor seja nulo o token irá durar 30 dias.

Type:
  • Date

offlineAuth :boolean

Indica se o token poderá ser utilizado off-line. Atualmente não é possível criar tokens offline, apenas é possível autenticar/restaurar token criados enquanto a conexão ainda está online.

Type:
  • boolean

scope :string

Lista separada por espaço dos escopos de uso autorizados por este token.

Type:
  • string

userKey :number|DBKey

Chave do usuário que autorizou o token. A sessão que logar utilizando este token, irá executar em nome deste usuário.

Type:
  • number | DBKey