Como autenticar usuários finais

Se o aplicativo processa solicitações de usuários finais, recomendamos restringir o acesso apenas aos usuários finais permitidos. Para isso, escolha uma das seguintes opções:

Em qualquer uma das opções acima, você precisa de um aplicativo público da Web ou para dispositivos móveis que processe o fluxo de login e faça chamadas de API autenticadas para um serviço do Cloud Run (totalmente gerenciado). É possível hospedar o aplicativo público da Web em um serviço público do Cloud Run. Se você estiver usando o Login do Google, esse aplicativo público da Web precisará estar no mesmo domínio que o serviço do Cloud Run que requer autenticação.

Como usar o Identity Platform ou o Firebase Authentication

Se você quiser autenticar usuários por meio de e-mail/senha, número de telefone, provedores de redes sociais, como Facebook ou GitHub, ou um mecanismo de autenticação personalizado, use o Firebase Authentication ou o Identity Platform. Para um tutorial completo sobre como usar o Identity Platform para autenticação de usuários finais, consulte o tutorial de Autenticação de usuários finais para o Cloud Run.

O uso do Firebase Authentication é parecido com o do Identity Platform.

  1. Configure o Firebase Authentication no seu projeto e serviço:

    1. Configure o Firebase Authentication no console do Firebase.

      Acessar o Console do Firebase

    2. Importe o SDK Admin do Firebase apropriado e configure-o adequadamente.

    3. Adicione um middleware ao código para verificar os tokens de ID do Firebase.

    4. Implante seu serviço publicamente.

  2. Faça o seguinte no seu aplicativo da Web ou para dispositivos móveis:

    1. Usar a biblioteca de cliente do Firebase Auth apropriada para receber um token do código:
    2. Inclua o token de ID em um cabeçalho Authorization: Bearer ID_TOKEN na solicitação para o serviço.

Para instruções completas de um aplicativo usando essa técnica de autenticação, siga o tutorial de autenticação do usuário final para o Cloud Run.

Como acessar informações do perfil do usuário

Se você quiser acessar as informações do perfil do usuário, use o SDK Admin do Firebase para recuperar os dados do usuário.

Como usar o Login do Google

Ative o Login do Google no seu projeto:

  1. Crie um ID do cliente do OAuth 2.0 para seu aplicativo no mesmo projeto que o serviço que você quer proteger:
    1. Acesse a página Credenciais.

      Acesse a página Credenciais

    2. Selecione o projeto com o serviço que você quer proteger.
    3. Clique em Criar credenciais e selecione ID do cliente OAuth.
      1. Talvez você será solicitado a configurar sua tela de consentimento do OAuth antes de criar um ID de cliente. Se necessário, faça isso para continuar.
    4. Selecione o Tipo de aplicativo para que você quer criar credenciais.
    5. Adicione um Nome e Restrições,, se apropriado, e clique em Criar.
  2. Reimplante o serviço que você quer proteger. Isso garantirá que o ID correto do cliente seja definido na função.

    Se houver vários IDs de cliente do OAuth (por exemplo, um para Android, um para iOS e um para Web), será necessário implantar novamente os serviços depois de adicionar cada um deles para garantir que o serviço receba a alteração. Da mesma forma, se você excluir um ID do cliente, terá que reimplantar os serviços para remover esse ID e negar solicitações. Todos os IDs de cliente dentro de um projeto serão aceitos.

Faça o seguinte no seu aplicativo da Web ou para dispositivos móveis:

  1. Obter um token do código para o ID do cliente OAuth:
  2. incluir o token do código em um cabeçalho Authorization: Bearer ID_TOKEN na solicitação para o serviço.

O Cloud Run valida o token de autenticação e permite ou rejeita a solicitação antes da inicialização do serviço. Se uma solicitação for rejeitada, você não será cobrado por ela.

Apps da Web, autenticação e CORS

Ao criar um aplicativo da Web, considere os problemas do Compartilhamento de recursos entre origens (CORS, na sigla em inglês). Por exemplo, as solicitações simuladas do CORS são enviadas sem um cabeçalho Authorization. Portanto, elas são rejeitadas em um serviço não público. Como há falha nas solicitações simuladas, a solicitação principal também falhará.

Para contornar esse problema, hospede seus aplicativos e serviços da Web no mesmo domínio para evitar solicitações simuladas do CORS. Para isso, use o Firebase Hosting.

Como acessar informações do perfil do usuário

Se quer acessar as informações do perfil do usuário, retire o token do cabeçalho Authorization e faça uma solicitação para o endpoint Validate Token.

O corpo do token de ID é retornado com as seguintes informações:

{
 // These six fields are included in all Google ID Tokens.
 "iss": "https://accounts.google.com",
 "sub": "110169484474386276334",
 "azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "iat": "1433978353",
 "exp": "1433981953",

 // These seven fields are only included when the user has granted the "profile"
 // and "email" OAuth scopes to the application.
 "email": "testuser@gmail.com",
 "email_verified": "true",
 "name" : "Test User",
 "picture": "https://lh4.googleusercontent.com/-kYgzyAWpZzJ/ABCDEFGHI/AAAJKLMNOP/tIXL9Ir44LE/s99-c/photo.jpg",
 "given_name": "Test",
 "family_name": "User",
 "locale": "en"
}

Solução de problemas

Se as solicitações de usuários forem rejeitadas e você acreditar que deveriam ser permitidas, verifique se os usuários receberam o papel roles/run.invoker ou têm a permissão run.routes.invoke. Saiba mais sobre isso na referência de IAM do Cloud Run.

A seguir

Para ver um tutorial completo sobre como usar o Identity Platform para autenticação de usuários finais, consulte o tutorial Autenticação de usuários finais para o Cloud Run.