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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Install the Google Cloud CLI, then initialize it by running the following command:

    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 Marketplace do Identity Platform 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 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 do Identity Platform"

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

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 APLICAÇÕES.

  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 em Usar identidades externas para receber 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 de inserir 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 Salvar.

Pronto! Você terminou de configurar o IAP.

Testar a autenticação do usuário

Para testar se o IAP está protegendo seu app 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, você precisa sair do app de exemplo que criou e do Facebook. É necessário sair 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 conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

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

A seguir