Autenticação de Facebook, Google e de provedor externo no ASP.NET Core

Por Valeriy Novytskyy e Rick Anderson

Este tutorial demonstra como criar um aplicativo ASP.NET Core que permite aos usuários entrar usando o OAuth 2.0 com credenciais de provedores de autenticação externos.

Os provedores do Facebook, Twitter, Googlee Microsoft são abordados nas seções a seguir e usam o projeto inicial criado neste artigo. Outros provedores estão disponíveis em pacotes de terceiros, como AspNet.Security.OAuth.Providers e AspNet.Security.OpenId.Providers.

Permitir que os usuários entrem com suas credenciais existentes:

  • É conveniente para os usuários.
  • Remove muitas das complexidades de gerenciar o processo de conexão para um terceiro.

Para obter um exemplo de como os logons sociais podem impulsionar o tráfego e as conversões de clientes, consulte o estudo de caso do Facebook.

Criar um novo projeto ASP.NET Core

  • Criar um novo projeto.
  • Selecione Aplicativo Web ASP.NET Core e Próximo.
  • Forneça um Nome do projeto e confirme ou altere a localização. Selecione Criar.
  • Selecione a versão mais recente do ASP.NET Core na lista ASP.NET Core {X.Y} e, em seguida, selecione Aplicativo Web.
  • Selecione Autenticação selecione Mudar e configure a autenticação para Contas de Usuário Individuais. Selecione OK.
  • Na janela Criar novo aplicativo Web ASP.NET Core, selecione Criar.

Aplicar migrações

  • Execute o aplicativo e selecione o link Registrar.
  • Insira o email e a senha para a nova conta e, em seguida, selecione Registrar.
  • Siga as instruções para aplicar as migrações.

Encaminhar informações de solicitação com um proxy ou balanceador de carga

Se o aplicativo for implantado atrás de um servidor proxy ou um balanceador de carga, algumas das informações da solicitação original podem ser encaminhadas para o aplicativo nos cabeçalhos de solicitação. Essas informações geralmente incluem o esquema de solicitação segura (https), o host e o endereço IP do cliente. Os aplicativos não leem automaticamente esses cabeçalhos de solicitação para descobrir e usar as informações da solicitação original.

O esquema é usado na geração de link que afeta o fluxo de autenticação com provedores externos. Perder o esquema de seguro (https) resulta no aplicativo gerando URLs de redirecionamento inseguros incorretos.

Use Middleware de cabeçalhos encaminhados para disponibilizar as informações da solicitação original ao aplicativo para o processamento da solicitação.

Para obter mais informações, consulte Configure o ASP.NET Core para trabalhar com servidores proxy e balanceadores de carga.

Usar o SecretManager para armazenar os tokens atribuídos por provedores de logon

Os provedores de logon social atribuem tokens de ID do Aplicativo e Segredo do Aplicativo durante o processo de registro. Os nomes de token exatos variam de acordo com o provedor. Esses tokens representam as credenciais que seu aplicativo usa para acessar a API. Os tokens constituem os "segredos do usuário" que podem ser vinculados à configuração do aplicativo com a ajuda do Gerenciador de Segredos. Os segredos do usuário são uma alternativa mais segura para armazenar os tokens em um arquivo de configuração, como appsettings.json .

Importante

O Secret Manager destina-se apenas para fins de desenvolvimento. Você pode armazenar e proteger os segredos de teste e produção do Azure com o provedor de configuração do Azure Key Vault.

Siga as etapas no tópico Armazenamento seguro dos segredos do aplicativo em desenvolvimento no ASP.NET Core para armazenar os tokens atribuídos por cada provedor de logon abaixo.

Configurar os provedores de logon necessários para o aplicativo

Use os seguintes tópicos para configurar seu aplicativo para usar os respectivos provedores:

Vários provedores de autenticação

Caso o aplicativo exija vários provedores, encadeie os métodos de extensão do provedor em AddAuthentication:

services.AddAuthentication()
    .AddMicrosoftAccount(microsoftOptions => { ... })
    .AddGoogle(googleOptions => { ... })
    .AddTwitter(twitterOptions => { ... })
    .AddFacebook(facebookOptions => { ... });

Definir a senha opcionalmente

Ao registrar um provedor de logon externo, você não precisa ter uma senha registrada no aplicativo. Isso o alivia da tarefa de criar e lembrar de uma senha para o site, mas também o torna dependente do provedor de logon externo. Se o provedor de logon externo não estiver disponível, você não poderá se conectar ao site.

Para criar uma senha e entrar usando seu email definido durante o processo de entrada com provedores externos:

  • Selecione o link Olá,<>alias de email no canto superior direito para navegar até a exibição Gerenciar.

Exibição Gerenciar do Aplicativo Web

  • Escolha Criar

Definir a página de senha

  • Defina uma senha válida e use-a para entrar com seu email.

Próximas etapas

  • Consulte este GitHub para obter informações sobre como personalizar os botões de logon.
  • Este artigo apresentou a autenticação externa e explicou os pré-requisitos necessários para adicionar logons externos ao aplicativo ASP.NET Core.
  • Páginas de referência específicas ao provedor para configurar logons para os provedores necessários para o aplicativo.
  • Você talvez queira manter os dados adicionais sobre o usuário e seus tokens de atualização e acesso. Para obter mais informações, consulte Persistir declarações e tokens adicionais de provedores externos ASP.NET Core.