FwJwt
Geracao e validacao de JWT (JSON Web Tokens). Padrao moderno de autenticacao stateless em REST APIs.
Assinatura: cToken := FwJwt():generate(oPayload, cSecret) / oPayload := FwJwt():verify(cToken, cSecret)
Retorna: Character
FwJwt implementa JWT — token assinado contendo claims (payload). Padrao em REST APIs modernas.
// Gerar token apos login
oPayload := JsonObject():New()
oPayload["sub"] := cUserId
oPayload["exp"] := Now() + (8 / 24) // 8 horas
oPayload["role"] := "admin"
cToken := FwJwt():generate(oPayload, GetMV("MV_JWTSEC"))
// Em endpoint protegido
@Get("/api/v1/private")
function Endpoint()
cToken := SubStr(oRequest:getHeader("Authorization"), 8) // "Bearer XXX"
try
oClaims := FwJwt():verify(cToken, GetMV("MV_JWTSEC"))
cUser := oClaims["sub"]
// ...
catch e
oResponse:setStatus(401)
Return '{"error":"unauthorized"}'
endtry
return
Pegadinhas
- Secret deve ser longo (32+ bytes) e bem guardado.
- Expiracao (exp) e obrigatoria — sem isso, token vale pra sempre.
- JWT nao deve carregar PII sensivel — qualquer um pode decodar (so a assinatura e segura).
- Pra revogar antes de expirar, manter blacklist em cache.