Compartilhar via


Configuração de logon externo do Google no ASP.NET Core

Por Valeriy Novytskyy, Rick Anderson e Sharaf Abacery

Este tutorial mostra como habilitar a entrada do usuário com contas do Google usando um projeto ASP.NET Core de exemplo criado usando provedores de logon externos com Identity o ASP.NET Core. Siga as diretrizes oficiais do Google em Entrar com o Google para Web: Configuração para criar uma ID de cliente da API do Google.

Criar o aplicativo no Google

  • Navegue até a página API & Serviços do Google da plataforma Google Cloud.
  • Se nenhum projeto existir, crie um novo projeto selecionando o botão Criar Projeto . Para selecionar um projeto diferente de um projeto existente que é carregado, selecione o botão carregado do projeto no canto superior esquerdo da interface do usuário, seguido pelo projeto. Para adicionar um novo projeto, selecione o botão carregado do projeto no canto superior esquerdo da interface do usuário, seguido pelo botão Novo projeto .
  • Ao criar um novo projeto:
    • Insira um nome de projeto.
    • Opcionalmente, selecione uma Organização para o projeto.
    • Selecione o botão Criar.

Depois de criar o projeto, a página Painel do projeto é carregada, onde é possível configurar o projeto.

Abra a guia Credenciais para criar o cliente OAuth.

O pré-requisito para criar as credenciais é configurar a tela de consentimento do OAuth. Se o consentimento não estiver configurado, haverá um prompt para configurar a tela de consentimento.

  • Selecione Configurar tela de consentimento ou selecione a tela de consentimento OAuth na barra lateral.
  • Na tela de consentimento do OAuth, selecione Introdução.
  • Defina o nome do aplicativo e o email de suporte do usuário.
  • Defina o tipo de audiência como Externo.
  • Adicione informações de contato inserindo um endereço de email de contato.
  • Concorde com os termos.
  • Selecione Criar.

Crie as credenciais do cliente para o aplicativo abrindo o item de menu da barra lateral Clientes :

  • Selecione o botão Criar cliente .
  • Selecione o aplicativo Web como o tipo de aplicativo.
  • Insira um nome para o cliente.
  • Adicione um URI de redirecionamento autorizado. Para testes locais, use o endereço https://localhost:{PORT}/signin-googlepadrão, em que o {PORT} espaço reservado é a porta do aplicativo.
  • Selecione o botão Criar para criar o cliente.
  • Salve a ID do cliente e o segredo do cliente, que são usados posteriormente na configuração do aplicativo ASP.NET.

Observação

O segmento de URI /signin-google é configurado como o callback padrão do provedor de autenticação do Google. É possível alterar o URI de retorno de chamada padrão ao configurar o middleware de autenticação do Google por meio da propriedade herdada RemoteAuthenticationOptions.CallbackPath da GoogleOptions classe.

Ao implantar o aplicativo, também:

  • Atualize o URI de redirecionamento do aplicativo no Console do Google para o URI de redirecionamento implantado do aplicativo.
  • Crie um novo registro de API do Google no Console do Google para o aplicativo de produção com seu URI de redirecionamento de produção.

Armazenar a ID e o segredo do cliente do Google

Armazene configurações confidenciais, como a ID do cliente google e valores secretos, com o Gerenciador de Segredos. Para este exemplo, siga estas etapas:

  1. Inicialize o projeto para armazenamento secreto de acordo com as instruções no armazenamento seguro de segredos do aplicativo no desenvolvimento no ASP.NET Core.

  2. Armazene as configurações confidenciais no repositório de segredos local com as chaves secretas Authentication:Google:ClientId (valor: {CLIENT ID} espaço reservado) e Authentication:Google:ClientSecret (valor: {CLIENT SECRET} espaço reservado):

    dotnet user-secrets set "Authentication:Google:ClientId" "{CLIENT ID}"
    dotnet user-secrets set "Authentication:Google:ClientSecret" "{CLIENT SECRET}"
    

O separador : não é compatível com chaves hierárquicas de variáveis de ambiente em todas as plataformas. Por exemplo, o separador : não é suportado pelo Bash . O sublinhado duplo, __, é:

  • Compatível com todas as plataformas.
  • Substituição automática por dois pontos, :.

Gerenciar credenciais de API e uso no Console de API.

Configurar a autenticação do Google

Adicione o serviço de autenticação ao Program arquivo:

services.AddAuthentication().AddGoogle(googleOptions =>
{
    googleOptions.ClientId = configuration["Authentication:Google:ClientId"];
    googleOptions.ClientSecret = configuration["Authentication:Google:ClientSecret"];
});

Adicione o serviço de autenticação a Startup.ConfigureServices:

services.AddAuthentication().AddGoogle(googleOptions =>
{
    googleOptions.ClientId = configuration["Authentication:Google:ClientId"];
    googleOptions.ClientSecret = configuration["Authentication:Google:ClientSecret"];
});

A sobrecarga AddAuthentication(IServiceCollection, String) define a propriedade DefaultScheme. A sobrecarga de AddAuthentication(IServiceCollection, Action<AuthenticationOptions>) permite configurar opções de autenticação, que podem ser usadas para configurar esquemas de autenticação padrão para diferentes finalidades. Chamadas subsequentes para AddAuthentication substituem propriedades anteriormente configuradas de AuthenticationOptions.

AuthenticationBuilder métodos de extensão que registram um manipulador de autenticação só podem ser chamados uma vez por esquema de autenticação. Existem sobrecargas que permitem configurar as propriedades do esquema, o nome do esquema e o nome de exibição.

Entrar com o Google

  • Execute o aplicativo e selecione Fazer logon.
  • Em Usar outro serviço para fazer logon, selecione Google.
  • O navegador é redirecionado ao Google para autenticação.
  • Selecione a conta do Google para fazer logon ou inserir credenciais do Google.
  • Se esta for a primeira vez que você entra, há um prompt para permitir que o aplicativo acesse as informações da conta do Google.
  • O navegador é redirecionado de volta para o aplicativo, onde é possível definir o email.

O usuário agora está conectado usando as credenciais do Google.

Solução de problemas

Próximas etapas

  • Este artigo demonstra a autenticação com o Google. Para obter informações sobre como autenticar com outros provedores externos, consulte Usando provedores de logon externos no Identity ASP.NET Core.
  • Depois que o aplicativo for implantado no Azure, redefina o ClientSecret console da API do Google.
  • Defina as Authentication:Google:ClientId configurações e Authentication:Google:ClientSecret como aplicativo no portal do Azure. O sistema de configuração é configurado para ler chaves das variáveis de ambiente.