Como usar o Firebase para autenticar usuários

Nesta página, você verá como oferecer suporte à autenticação de usuários no gateway de API.

Para autenticar um usuário, um aplicativo cliente precisa enviar um token da Web do JSON (JWT, na sigla em inglês) no cabeçalho de autorização da solicitação HTTP para sua API de back-end. O gateway de API valida o token em nome da API, para que você não precise adicionar nenhum código à API para processar a autenticação. No entanto, você precisa configurar a API para que o gateway seja compatível com os métodos de autenticação escolhidos.

O gateway de API valida um JWT de maneira eficiente usando o conjunto de chaves JSON da Web (JWKS) do emissor do JWT. O local do JWKS é especificado na configuração da API do gateway. O Gateway de API armazena em cache o JWKS por cinco minutos e o atualiza a cada cinco minutos.

Antes de começar

  • Adicione o código de autenticação ao seu aplicativo cliente, seguindo a documentação do Firebase Authentication. O Firebase é compatível com a autenticação por meio de senhas, números de telefone e provedores de identidade federada, como Google, Facebook e Twitter.

  • Quando seu aplicativo cliente envia uma solicitação HTTP, o cabeçalho de autorização na solicitação deve conter as seguintes declarações do JWT:
    • iss (emissor)
    • sub (assunto)
    • aud (público-alvo)
    • iat (emitido em)
    • exp (prazo de validade)

Configurar o gateway de API para dar suporte à autenticação do cliente

É preciso ter uma seção de segurança na configuração da API para que o gateway de API valide as declarações no JWT assinado. O esquema usado para definir os métodos de segurança depende da versão da especificação OpenAPI que você usa.

Para dar suporte à autenticação Firebase:

OpenAPI 2.0

  1. Adicione o seguinte à configuração da API:
    securityDefinitions:
       firebase:
          authorizationUrl: ""
          flow: "implicit"
          type: "oauth2"
          # Replace PROJECT_ID with your project ID
          x-google-issuer: "https://securetoken.google.com/PROJECT_ID"
          x-google-jwks_uri: "https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com"
          x-google-audiences: "PROJECT_ID"
  2. Adicione uma seção de segurança no nível da API, para ser aplicável a toda a API, ou no nível do método, para ser aplicável a um método específico.
    security:
       -   firebase: []

OpenAPI 3.x

  1. Adicione o seguinte à configuração da API:
    components:
      securitySchemes:
        firebase:
          type: oauth2
          flows:
           implicit:
             authorizationUrl: ""
             scopes: {}
          x-google-auth:
            # Replace PROJECT_ID with your project ID