Autenticar usuários com identidades externas

Neste guia de início rápido, você aprenderá como proteger um app usando o Identity-Aware Proxy (IAP) e identidades externas. Ao combinar o IAP e o Identity Platform, é possível autenticar usuários com uma ampla variedade de provedores de identidade, como OAuth, o SAML e o OIDC (links em inglês), além das Contas do Google.

Neste guia de início rápido, você seguirá as instruções para proteger um aplicativo de amostra do App Engine usando a autenticação do Facebook.

Antes de começar

  1. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  2. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  3. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

    gcloud init

  4. Inicialize o App Engine para seu projeto:

    gcloud app create --project=project-id
    
  5. Instale o Git (em inglês).

  6. Instale uma versão atual do Node.js.

  7. Instale a ferramenta de linha de comando do Firebase:

    npm install -g firebase-tools
    

Ativar as APIs

Primeiro, ative o Identity Platform:

  1. Acesse a página do Identity Platform Marketplace no Console do Google Cloud.

    Acessar a página do Identity Platform no Marketplace

  2. Clique em Ativar Identity Platform. A página do Identity Platform aparece no console do Google Cloud.

Em seguida, ative o IAP:

  1. Acesse a página do IAP no console do Google Cloud.

    Acessar a página do IAP

  2. Selecione o mesmo projeto que você usou no Identity Platform. Não é possível usar projetos diferentes.

  3. Clique em Ativar API.

Fazer o download e implantar o código de amostra

O código usado neste guia de início rápido tem dois componentes: um app cliente e um app de autenticação.

O app cliente está protegido pelo IAP. Quando ele recebe uma solicitação de um usuário não autenticado, essa solicitação é redirecionada ao app de autenticação para que a identidade do usuário seja verificada. Se o usuário conseguir fazer login, o app de autenticação responderá com um JSON Web Token (JWT). Para fins de demonstração, o app cliente exibe o JWT.

Primeiro, faça o download do código e implante o app cliente:

  1. Faça o download do código de amostra:

    git clone https://github.com/GoogleCloudPlatform/iap-gcip-web-toolkit.git
    
  2. Mude para o diretório do app cliente:

    cd iap-gcip-web-toolkit/sample/app
    
  3. Instale as dependências:

    npm install
    
  4. Implante o app cliente no App Engine:

    npm run deploy
    

    O app cliente é iniciado no URL:

    https://[PROJECT-ID].appspot.com
    

Em seguida, implante o app de autenticação:

  1. Mude para o diretório do app de autenticação:

    cd ../authui-firebaseui
    
  2. Instale as dependências:

    npm install
    
  3. Configure o app de autenticação para usar o Firebase Hosting. Especifique o ID do projeto do Google Cloud que contém o app cliente protegido pelo IAP:

    firebase use project-id
    
  4. Implante o app:

    npm run deploy
    

    O app de autenticação é iniciado no URL:

    https://[PROJECT-ID].firebaseapp.com
    

Pronto! Você implantou os apps cliente e de autenticação. A próxima etapa é configurar o Identity Platform e o IAP.

Configurar o Identity Platform

O IAP usa o Identity Platform para autenticar identidades externas. Neste guia de início rápido, o Facebook é usado como exemplo. No entanto, o Identity Platform é compatível com uma ampla variedade de provedores de identidade.

Criar um app do Facebook

Para autenticar usuários com o Facebook, você precisa do ID e da chave secreta do app.

  1. Faça login no Facebook for Developers. Se você ainda não tiver uma conta do Facebook, será necessário criar uma.

  2. Acesse a página Meus aplicativos no Facebook.

  3. Clique em Adicionar um novo aplicativo.

  4. No menu à esquerda, selecione Configurações > Básico.

  5. Na caixa URL da Política de Privacidade, insira qualquer URL válido. Se, mais tarde, você quiser implantar o app em produção, conseguirá atualizar o URL para que direcione à sua política de privacidade.

  6. Anote o ID e a chave secreta do app. Você precisará dessas informações na próxima seção.

Incluir o Facebook como um provedor de identidade

Configure o Identity Platform para usar o Facebook na autenticação:

  1. Acesse a página Provedores de identidade no console do Google Cloud.

    Acessar a página "Provedores de identidade"

  2. Clique em Adicionar um provedor.

  3. Selecione Facebook na lista de provedores.

  4. Insira o ID e a chave secreta do app que você viu na seção anterior.

  5. Clique em Save.

Configurar o URI de redirecionamento OAuth

Quando o Facebook termina de processar uma solicitação do app de autenticação, ele precisa de um URI para fazer o redirecionamento.

  1. Retorne à página Meus aplicativos no Facebook e selecione seu app.

  2. No menu à esquerda, clique em Produtos.

  3. Localize o produto Login do Facebook e clique em Configurar.

  4. No menu de navegação à esquerda, selecione Configurações. Você não precisa concluir o fluxo do guia de início rápido.

  5. Na caixa URIs de redirecionamento do OAuth válidos, insira o URI de redirecionamento:

    https://project-id.firebaseapp.com/__/auth/handler
    

    Também é possível encontrar esse URI na página de configuração de provedores do Identity Platform.

  6. Clique em Salvar alterações.

Pronto! Você acabou de configurar o Identity Platform. Agora poderá configurar o IAP para usá-lo na autenticação.

Ativar o IAP para usar identidades externas

  1. Acesse a página do IAP no console do Google Cloud.

    Acessar a página do IAP

  2. Clique na guia APLICATIVOS.

  3. Selecione o aplicativo do App Engine de exemplo que você implantou anteriormente. O URL na categoria Publicado é parecido com este:

    https://project-id.appspot.com
    
  4. Na coluna "IAP", habilite a opção Ativado.

  5. No painel lateral, clique em Iniciar para Usar identidades externas para conseguir autorização.

  6. Em Página de login, selecione Vou fornecer meu próprio link.

  7. No campo URL de autenticação, insira o URL do app de autenticação. Ele precisa ser parecido com este:

    https://project-id.firebaseapp.com/
    

    Depois que você digitar o URL, o console do Google Cloud anexará automaticamente sua chave de API.

  8. Marque a caixa com o nome do seu projeto. O Facebook estará listado como um provedor de identidade.

  9. Clique em Save.

Pronto! Você terminou de configurar o IAP.

Testar autenticação do usuário

Para testar se o IAP está protegendo seu aplicativo e autenticando usuários com o Facebook:

  1. Acesse o aplicativo cliente do App Engine no seu navegador:

    https://project-id.appspot.com
    

    Depois de uma rápida tela de carregamento, você será redirecionado para a página de login do Identity Platform.

  2. Siga as instruções na tela para fazer a autenticação com o Facebook.

  3. Você será redirecionado para o app cliente, que exibirá o JWT retornado pelo Identity Platform.

Para sair completamente, saia do aplicativo de amostra que você criou e do Facebook. Saia dos dois apps porque o Firebase estabelece uma sessão com o Facebook que é válida por uma hora. Para mais informações, consulte Gerenciar sessões de usuários.

Parabéns! Você conseguiu implantar um aplicativo no App Engine e protegê-lo com o IAP e identidades externas.

Limpar

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.

  1. No Console do Google Cloud, acesse a página Gerenciar recursos.

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Também convém excluir o app do Facebook que você criou.

A seguir