Aprenda como criar um sistema de login seguro com contas de mídia social no Django usando OAuth.

A autenticação social é uma forma de confirmar a identidade de uma pessoa por meio de uma conta social em vez de usar senhas. No desenvolvimento web, é sempre útil autenticar usuários sem senhas. Dessa forma, eles podem fazer login por meio de aplicativos sociais como Google, Twitter ou GitHub.

Habilitar a autenticação social é uma ótima maneira de aumentar a segurança do seu aplicativo, reduzindo o risco de vulnerabilidades comuns relacionadas a senhas. Isso também melhorará a experiência do usuário em seu aplicativo porque os usuários não precisarão se lembrar de muitas senhas.

Autenticação de usuário no Django

Django fornece um sistema de autenticação padrão para os desenvolvedores trabalharem. No entanto, este sistema de autenticação utiliza autenticação tradicional, que envolve a coleta manual de dados como nome de usuário, email, senha, nome e sobrenome do usuário.

Por design, o sistema de autenticação do Django é muito genérico e não fornece muitos recursos usados ​​na maioria dos sistemas de autenticação web atuais. Para complementar isso, você vai querer usar pacotes de terceiros, como o

Django-allauth pacote.

Como habilitar o OAuth no Django

Para autenticar seus usuários usando OAuth em uma aplicação Django, você pode usar um pacote Django chamado Django-allauth.

Django Allauth é um pacote que lida com autenticação, registro, gerenciamento de contas e autenticação de contas de terceiros (sociais) para seu projeto Django. As etapas a seguir irão guiá-lo na configuração do Django Allauth para seu projeto Django.

Passo 1: Instalar e configurar o Django-Allauth

Se você ainda não fez isso, criar um ambiente virtual e instale Django-allauth via pip:

pip install django-allauth

Observe que você deve estar usando Python 3.5 ou superior e Django 2.0 ou superior para que funcione.

Etapa 2: Adicionar aplicativos necessários ao Django para Django-Allauth

Depois de instalar Django-allauth, abre o teu configurações.py arquivo e adicione os seguintes aplicativos ao seu INSTALLED_APPS lista:

INSTALLED_APPS = [


Add your other apps here

# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]

Aqui estão alguns pontos a serem observados sobre alguns dos aplicativos acima:

  • O allauth.socialaccount O aplicativo permitirá que os usuários façam login por meio de aplicativos sociais como X (antigo Twitter), Instagram, GitHub e outros.
  • O django.contrib.sites app é uma estrutura Django integrada necessária para Django-allauth trabalhar. O aplicativo oferece a capacidade de gerenciar e diferenciar vários sites em um único projeto Django. Você pode entender como isso funciona consultando o Documentação do Django.

Etapa 3: Defina os back-ends de autenticação para seu projeto

A próxima etapa é definir como você deseja autenticar seus usuários. Você pode fazer isso configurando o AUTHENTICATION_BACKENDS na tua configurações.py arquivo. Para Django-allauth, você deve adicionar estes:

AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]

O trecho de código acima define dois back-ends de autenticação:

  1. O primeiro é o padrão usado pelo Django. Isto permitirá que o usuário administrador faça login no painel de administração independentemente da configuração do Django-allauth.
  2. O segundo define o backend de autenticação para Django-allauth.

Etapa 4: adicione o ID do seu site

No seu arquivo de configurações, você deve adicionar o ID do seu site. Aqui está um exemplo:

SITE_ID = 1

Por padrão, existe um site chamado exemplo.com no painel de administração. Você pode decidir modificar este site ou adicionar um para você. Em ambos os casos, você deve fazer login no painel de administração e navegar até o Locais aplicativo.

Para obter o ID do site Django, abra seu Interface de linha de comando (CLI) e execute este comando:

python manage.py shell

A seguir, escreva este script no shell Python:

from django.contrib.sites.models import Site

current_site = Site.objects.get_current()
site_id = current_site.id
site_name = current_site.name
print("Site ID:", site_id)
print("Site Name:", site_name)

O código acima imprimirá o nome do site, bem como seu ID.

Etapa 5: configure seus URLs

No seu projeto urls.py arquivo, configure o padrão de URL para Django-allauth. É assim que deve ser:

from django.urls import path, include

urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]

Com esta configuração, você pode iniciar seu servidor de desenvolvimento e navegar até http://127.0.0.1:8000/accounts/. Se você tem DEPURAR definido como Verdadeiro, você verá uma lista de padrões de URL disponíveis para Django-allauth.

Se você fez o acima, seu projeto deverá estar pronto para autenticação social.

Como implementar o login/inscrição do Google em seu aplicativo Django

Depois de configurar Django-allauth, você deve estar pronto para permitir que seus usuários se autentiquem em suas contas sociais, como o Google.

Etapa 1: registre seu provedor de conta social em seus aplicativos instalados

Na tua configurações.py arquivo, você deve adicionar o provedor da conta social em INSTALLED_APPS. Neste caso, é o Google. Outras opções são Instagram, X, etc.

INSTALLED_APPS = [


Add your other apps here

# Social account provider (google)
'allauth.socialaccount.providers.google',
]

Etapa 2: crie seu ID de cliente e chave secreta no Google

Para concluir esta etapa, você deve ter uma conta Google criada. Se você fez isso, siga estas próximas etapas:

  1. Vá para o Console do Google Cloud para criar um novo projeto. Primeiro, clique no menu suspenso mostrado na imagem abaixo:
  2. A seguir, clique em NOVO PROJETO:
  3. Digite um nome para o seu projeto e clique no botão CRIAR botão:
  4. Com seu projeto selecionado, clique em o cardápio de hambúrguer. Selecione APIs e serviços, então Credenciais:
  5. Em seguida, clique na opção que diz CONFIGURAR TELA DE CONSENTIMENTO e selecione Externo:
  6. Na próxima página, insira um nome para seu aplicativo e inclua um e-mail quando necessário. Você também pode explorar as configurações para alguma personalização. Feito isso, clique em SALVE E CONTINUE.
  7. No menu à esquerda, selecione Credenciais. Depois disso, clique em CRIAR CREDENCIAIS e selecione ID do cliente OAuth.
  8. A seguir, selecione o Tipo de aplicação e digite um nome para o mesmo. Para este tutorial, o Tipo de aplicação vai ser Aplicativo web.
  9. Em seguida, adicione URIs para o Origens JavaScript autorizadas e URIs de redirecionamento autorizados. O host do seu site deve ser de origem JavaScript e o sistema redirecionará os usuários para o URI de redirecionamento após a autenticação. O URI de redirecionamento normalmente deve conter seu-nome-do-host/contas/google/login/callback/. Para o modo de desenvolvimento, será: http://127.0.0.1:8000/accounts/google/login/callback/. Clique em CRIAR quando terminar.
  10. Depois de criar as credenciais, você pode copiar seu ID do Cliente ou Segredo do cliente para um local seguro ou baixe-os como arquivos JSON.

Etapa 3: adicione seu ID de cliente e chave secreta ao seu aplicativo Django

Depois de criar as credenciais necessárias, navegue até http://127.0.0.1:8000/admin, selecione Aplicativos sociaise crie um novo aplicativo social. Siga estas etapas para criar um novo aplicativo social:

  1. Adicione um provedor. O provedor refere-se ao aplicativo com o qual você está autenticando seu usuário. Nesse caso é o Google, em outro caso pode ser o Snapchat.
  2. Insira um nome para seu novo aplicativo social. Certifique-se de que é um nome razoável
  3. Cole no ID do Cliente você copiou do Google.
  4. Para o Chave secreta, cole no Segredo do cliente você copiou do Google.
  5. O Chave O campo não se aplica à autenticação com o Google, portanto ignore-o.
  6. Por fim, selecione um site ao qual associar o aplicativo social.

Etapa 4: teste sua autenticação do Google

Saia do painel de administração e navegue até http://127.0.0.1:8000/accounts/login/. Você verá uma opção para fazer login via Google.

Clique nele para redirecionar para a tela de consentimento. Em seguida, selecione uma conta para fazer login.

Depois de selecionar uma conta, você será redirecionado para http://127.0.0.1:8000/accounts/profile/. Isso significa que seu aplicativo está funcionando perfeitamente. Você pode criar modelos personalizados para substituir os padrão.

Aprimorando o registro do usuário com autenticação social no Django

Habilitar a autenticação social é uma ótima maneira de ajudar seus usuários a ter uma ótima experiência ao se registrar em seu aplicativo. Existem outras maneiras de habilitar a autenticação no Django, e você deve explorá-las para decidir o que é melhor para o seu caso de uso.