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
public
mixed
ALGORITMO
= 'HS256'
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