Class FirebaseIdTokenValidator

java.lang.Object
br.com.xadm.comum.seguranca.FirebaseIdTokenValidator

@Singleton @Requires(property="auth.firebase-project-id", pattern=".+") public class FirebaseIdTokenValidator extends Object
Valida Firebase ID Tokens via JWKS público do Google.

Bean condicional: instanciado apenas se auth.firebase-project-id estiver configurado. Quando ausente, o login Firebase fica desabilitado. O gate pattern = ".+" reprova a property ausente e a declarada-vazia; notEquals = "" deixaria o bean subir com ela ausente, e o init() estouraria na primeira resolução.

Cache JWKS: respeita Cache-Control: max-age da resposta; fallback de 1h. Se o Google estiver indisponível mas o cache existir, usa o cache (stale fallback). Se o cache estiver vazio e o Google indisponível, lança AuthException com code "jwks_unavailable".

Validações: assinatura RS256, iss, aud, exp com clock-skew de 60s.

  • Constructor Details

    • FirebaseIdTokenValidator

      public FirebaseIdTokenValidator(AuthSettings settings)
      Cria o validador com relógio do sistema.
      Parameters:
      settings - configurações de auth.
  • Method Details

    • validate

      Valida o Firebase ID token. Verifica assinatura RS256, iss, aud, exp (com clock-skew de 60s).
      Parameters:
      token - o Firebase ID token recebido do cliente.
      Returns:
      os claims extraídos (uid, email, name).
      Throws:
      AuthException - code "invalid_token" para falhas de validação; "jwks_unavailable" se o JWKS do Google não puder ser obtido.
    • preloadCacheForTesting

      public void preloadCacheForTesting(com.nimbusds.jose.jwk.JWKSet jwks, Instant expiresAt)
      Para uso em testes — pré-popula o cache sem HTTP.
      Parameters:
      jwks - o conjunto de chaves a injetar no cache.
      expiresAt - instante de expiração do cache.