Next BP 24.174.2

JWT
in package

Emissão e validação dos tokens JWT do Next BP.

Há dois tipos, e o algoritmo do cabeçalho é o que os separa:

  • Tokens de API (tela Tokens de API): HS256, assinados com o segredo da instalação. Só o próprio Next BP os valida.
  • Tokens OAuth (aplicativos conectados): RS256, assinados com a chave privada da instalação. A chave pública sai no JWKS, para que aplicativos externos (o servidor MCP, por exemplo) validem o token sem segredo nenhum.

Em ambos o JWT carrega apenas a identificação do token (jti) e do usuário (sub). As permissões concedidas ficam na tabela usuario_token: assim desativar, excluir ou alterar o token surte efeito imediato, sem depender do que o portador do JWT tem em mãos.

Table of Contents

Constants

ALGORITMO  = 'HS256'
ALGORITMO_OAUTH  = 'RS256'
PARAMETRO_SEGREDO  = 'jwt_secret'

Methods

algoritmo()  : mixed
Algoritmo declarado no cabeçalho do JWT, sem validar nada.
base64url()  : mixed
chaves_oauth()  : mixed
Chaves RSA ativas dos tokens OAuth, da mais nova para a mais antiga. A primeira é gerada no primeiro uso. As anteriores continuam no JWKS depois de uma rotação, para validar os tokens que emitiram.
emitir()  : mixed
emitir_oauth()  : mixed
Assina um token OAuth (access token ou id_token) com a chave RSA mais nova. O `kid` no cabeçalho diz a quem valida qual chave do JWKS usar.
formato_jwt()  : mixed
Um token de sessão é um md5 (32 caracteres, sem ponto); um JWT tem três segmentos separados por ponto.
gerar_chave_oauth()  : mixed
Gera e grava um novo par RSA 2048. Chamar de novo rotaciona a chave: tokens novos passam a sair com ela, e os antigos seguem válidos enquanto a chave anterior estiver ativa.
jwks()  : mixed
Chaves públicas no formato JWKS (RFC 7517).
segredo()  : mixed
Segredo de assinatura da instalação. Gerado na primeira utilização e persistido em `parametro`, para não exigir configuração manual.
validar()  : mixed
Valida assinatura e expiração. Retorna os claims ou dispara BusinessException com VALID_ERR_TOKEN, que o frontend já trata como sessão inválida.

Constants

ALGORITMO_OAUTH

public mixed ALGORITMO_OAUTH = 'RS256'

PARAMETRO_SEGREDO

public mixed PARAMETRO_SEGREDO = 'jwt_secret'

Methods

algoritmo()

Algoritmo declarado no cabeçalho do JWT, sem validar nada.

public static algoritmo(mixed $jwt) : mixed
Parameters
$jwt : mixed

base64url()

public static base64url(mixed $binario) : mixed
Parameters
$binario : mixed

chaves_oauth()

Chaves RSA ativas dos tokens OAuth, da mais nova para a mais antiga. A primeira é gerada no primeiro uso. As anteriores continuam no JWKS depois de uma rotação, para validar os tokens que emitiram.

public static chaves_oauth() : mixed

emitir()

public static emitir(mixed $usuario_token_model) : mixed
Parameters
$usuario_token_model : mixed

emitir_oauth()

Assina um token OAuth (access token ou id_token) com a chave RSA mais nova. O `kid` no cabeçalho diz a quem valida qual chave do JWKS usar.

public static emitir_oauth(array<string|int, mixed> $claims) : mixed
Parameters
$claims : array<string|int, mixed>

formato_jwt()

Um token de sessão é um md5 (32 caracteres, sem ponto); um JWT tem três segmentos separados por ponto.

public static formato_jwt(mixed $token) : mixed
Parameters
$token : mixed

gerar_chave_oauth()

Gera e grava um novo par RSA 2048. Chamar de novo rotaciona a chave: tokens novos passam a sair com ela, e os antigos seguem válidos enquanto a chave anterior estiver ativa.

public static gerar_chave_oauth() : mixed

jwks()

Chaves públicas no formato JWKS (RFC 7517).

public static jwks() : mixed

segredo()

Segredo de assinatura da instalação. Gerado na primeira utilização e persistido em `parametro`, para não exigir configuração manual.

public static segredo() : mixed

validar()

Valida assinatura e expiração. Retorna os claims ou dispara BusinessException com VALID_ERR_TOKEN, que o frontend já trata como sessão inválida.

public static validar(mixed $jwt) : mixed

O cabeçalho só escolhe o conjunto de chaves; cada Key tem o algoritmo fixo, então um token HS256 nunca é conferido contra a chave pública RSA (e vice-versa).

Parameters
$jwt : mixed

        
On this page

Search results