Compartilhar via


Autenticação de provedor externo no ASP.NET Core Identity

Por Valeriy Novytskyy e Rick Anderson

Este artigo explica como criar um aplicativo ASP.NET Core que permite que os usuários entrem usando o OAuth 2.0 com credenciais de provedores de autenticação externos.

Os provedores Facebook, Twitter, Google e 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 OpenIddict, AspNet.Security.OAuth.Providers e AspNet.Security.OpenId.Providers.

Permitir que os usuários entrem com suas credenciais existentes é conveniente para os usuários e desloca muitas das complexidades do gerenciamento do processo de entrada para terceiros.

Criar um novo projeto ASP.NET Core

  • Selecione o modelo Aplicativo Web ASP.NET Core. Selecione OK.
  • Na entrada de Tipo de autenticação, selecione Contas Individuais.

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 links que afeta o fluxo de autenticação com fornecedores 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, veja Configurar o ASP.NET Core para trabalhar com servidores proxy e balanceadores de carga.

Usar o Gerenciador de Segredos para armazenar 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 o aplicativo usa para acessar a API do provedor. Os tokens constituem 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 Gerenciador de Segredos é apenas para desenvolvimento e teste local. Proteja os segredos de preparo e produção com o provedor de configuração do Azure Key Vault, que também pode ser usado para desenvolvimento local e teste se você preferir não usar o Gerenciador de Segredos localmente.

Para obter diretrizes sobre como armazenar os tokens atribuídos por cada provedor de logon, consulte Armazenamento seguro de segredos do aplicativo em desenvolvimento no ASP.NET Core.

Configurar provedores de logon

Use os seguintes artigos para configurar provedores de logon e o aplicativo:

Vários provedores de autenticação

Quando o aplicativo requer vários provedores, encadeia os métodos de extensão do provedor em AddAuthentication:

builder.Services.AddAuthentication()
    .AddGoogle(options =>
    {
        // Google configuration options
    })
    .AddFacebook(options =>
    {
        // Facebook configuration options
    })
    .AddMicrosoftAccount(options =>
    {
        // Microsoft Account configuration options
    })
    .AddTwitter(options =>
    {
        // Twitter configuration options
    });

Para obter diretrizes de configuração detalhadas em cada provedor, consulte seus respectivos artigos.

Opcionalmente, defina uma senha

Ao registrar um provedor de logon externo, você não precisa ter uma senha registrada no aplicativo. Isso facilita a criação e a lembrança de uma senha para o site, mas também o torna completamente dependente do provedor de logon externo para acesso ao site. Se o provedor de logon externo não estiver disponível, você não poderá entrar no aplicativo.

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

  • Selecione o link Hello <alias de email> no canto superior direito para navegar até a exibição Gerenciar:

Gerenciar Visualização do Aplicativo Web

  • Selecione Criar:

Página para configurar sua senha

  • Defina uma senha válida e você pode usar essa credencial para entrar com seu endereço de email.

Informações adicionais