Todos os artigos
FT-OAUTH-JWT-BEARER-V1· 1.0.0Integrações

OAuth 2.0 — JWT Bearer Assertion (RFC 7523)

Autenticação via JWT assinado pela chave privada do cliente. Padrão SAP S/4HANA enterprise, Auth0 private_key_jwt e Azure AD on-behalf-of.

Atualizado em 8/6/2026

OAuth 2.0 — JWT Bearer Assertion grant



Grant baseado em JWT assinado como assertion no token request. RFC 7523 §2.1.

Quando usar



  • SAP S/4HANA enterprise (chave privada registrada no provider)
  • Auth0 private_key_jwt (alternativa a client_secret pra grants confidential)
  • Azure AD on-behalf-of (OBO) — caller injeta JWT do usuário final


2 modos suportados



Modo A — Self-signed (mais comum)



Cliente possui chave privada RSA/EC. Lefia monta JWT (claims iss, sub, aud, iat, exp, jti) e assina antes de mandar pro token endpoint.

CampoDetalhe
Token EndpointURL do /oauth/token do provider
Private Key (PEM)Chave RSA ou EC. Aceita \n literal (form-friendly)
Issuer (iss)Normalmente o client_id
Subject (sub)Normalmente o client_id (M2M) ou user upn (OBO)
Audience (aud)Default: token endpoint. Auth0 pede o audience da API
Key ID (kid, opcional)Apontamento pra chave registrada no provider
AlgoritmoDefault RS256. Suporta RS384, RS512, ES256, ES384, ES512


Modo B — Pré-fabricado (Azure AD OBO)



Caller já tem JWT do usuário (do flow de auth do app principal). Cole no campo JWT Assertion pronto. O Lefia só anexa ao body sem assinar — usa pro Azure AD OBO com requested_token_use=on_behalf_of.

Ciclo de vida



Token é cacheado em oauth_tokens (mesma tabela do Client Credentials). Refresh ocorre re-assinando novo JWT — não há refresh_token nesse grant.

Limitações



  • Não devolve refresh_token (JWT Bearer não precisa — basta re-assinar).
  • HS256 (chave simétrica) não é aceito — apenas assimétricos (RSA/EC).
  • Pra ES* keys o Lefia usa IEEE-P1363 encoding (formato JOSE) — Node default seria ASN.1 DER, incompatível.


Tickets relacionados



  • #194 implementação completa.

Histórico de versões

  • 1.0.0

    OAuth 2.0 JWT Bearer Assertion grant (RFC 7523). signJwtAssertion (RSA/EC), fetchTokenJwtBearer, getJwtBearerTokenForConnection com cache em oauth_tokens. Modo A self-signed (SAP S/4HANA, Auth0 private_key_jwt) + Modo B OBO (Azure AD). REST connector + odata-client + odata-metadata wireados. Form REST ganhou 7 campos oauthJwt*. 17 testes novos.

    5/16/2026 · new