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 o 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 o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.

  3. Instale e inicialize a Google Cloud CLI.

  4. Inicialize o App Engine para seu projeto:

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

  6. Instale o Node.js (em inglês).

  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 no Marketplace, no Console do Cloud.

    Acessar a página do Identity Platform Marketplace

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

Em seguida, ative o IAP:

  1. Acesse a página IAP no Console do Cloud.

    Acessar a página 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 mesmo ID do projeto usado no app cliente:

    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 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 Cloud.

    Acessar a página IAP

  2. Clique na guia Recursos HTTP.

  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.

    Ativar o IAP

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

    Alternar para identidades externas

  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 de inserir o URL, o Console do Cloud anexa automaticamente sua chave de API.

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

    Configurar identidades externas

  9. Clique em Save.

Pronto! Você terminou de configurar o IAP.

Testar o acesso

Para testar se o IAP está protegendo seu app, siga estas etapas:

  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.

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 as etapas abaixo.

  1. No console do 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