Como construir um sistema de autenticação social em Django usando OAuth
A autenticação social é uma forma de confirmar a identidade de uma pessoa através de uma conta social em vez de utilizar palavras-passe. No desenvolvimento web, é sempre útil autenticar os utilizadores sem palavras-passe. Desta forma, podem iniciar sessão através de aplicações sociais como o Google, o Twitter ou o GitHub.
A implementação da autenticação social pode reforçar significativamente a segurança e a integridade de uma aplicação, minimizando a suscetibilidade a fraquezas generalizadas centradas em palavras-passe e, simultaneamente, melhorando a experiência do utilizador final através da eliminação do fardo de recordar várias credenciais de início de sessão.
Autenticação de usuário em Django
Django oferece um mecanismo de autenticação embutido que facilita a colaboração entre desenvolvedores. No entanto, ele emprega autenticação convencional, necessitando de entrada manual de informações, incluindo nomes de usuário, e-mails, senhas, nomes e sobrenomes dos usuários.
O sistema de autenticação padrão do Django possui uma estrutura básica que carece de vários recursos avançados comumente encontrados em estruturas de autenticação da Web contemporâneas. Portanto, é altamente recomendado incorporar componentes adicionais, como a biblioteca django-allauth, que pode complementar e melhorar sua funcionalidade.
Como habilitar o OAuth no Django
Para validar a autenticação de usuários dentro de um projeto Django utilizando o protocolo OAuth, pode-se empregar a biblioteca Django conhecida como “django-allauth”.
Django Allauth é uma interface de programação de aplicações desenhada para simplificar a autenticação de utilizadores, registo e processos de gestão de contas dentro de uma framework de desenvolvimento web Django. Para estabelecer esta funcionalidade no seu projeto Django, siga o conjunto abrangente de instruções fornecidas abaixo.
Passo 1: Instalar e configurar o Django-Allauth
Se você ainda não o fez, é recomendado que você estabeleça um ambiente virtual e instale o Django-allauth usando pip. Isto irá permitir a integração do allauth no seu projeto Django.
pip install django-allauth
Por favor, tome nota que esta funcionalidade é apenas compatível com Python versão 3.5 ou posterior, assim como Django frameworks versão 2.0 ou superior.
Passo 2: Adicionar aplicações necessárias ao Django para o Django-Allauth
Após a instalação da biblioteca ‘django-allauth’, é necessário alterar o ficheiro de configuração no projeto, adicionando uma lista de aplicações no parâmetro “INSTALLED\_APPS” localizado no ficheiro “settings.py”. Especificamente, é preciso incluir o nome da aplicação, bem como quaisquer dependências adicionais que possam ser necessárias para o seu bom funcionamento.
INSTALLED_APPS = [
"""
Add your other apps here
"""
# Djang Allauth configuration apps
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
]
Várias considerações importantes devem ser levadas em conta em relação aos aplicativos mencionados acima, incluindo seus recursos e capacidades.
A aplicação allauth.socialaccount facilita a autenticação do utilizador através de várias plataformas sociais, incluindo, mas não se limitando a, X (anteriormente conhecido como Twitter), Instagram e GitHub.
⭐ A aplicação django.contrib.sites é um framework Django embutido que é necessário para o django-allauth funcionar. A app fornece a habilidade de gerenciar e diferenciar múltiplos sites dentro de um único projeto Django. Você pode entender como ele funciona consultando a documentação do Django .
Passo 3: Defina os Backends de Autenticação para o seu projeto
Para estabelecer um sistema de autenticação de usuários, é necessário especificar o método desejado de verificação para os usuários. Isso pode ser alcançado ajustando a configuração de AUTHENTICATION\_BACKENDS dentro do arquivo settings.py. Especificamente, para aqueles que utilizam a biblioteca django-allauth, a incorporação dos componentes mencionados acima é recomendada.
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
O código fornecido estabelece uma estrutura para implementar e utilizar vários mecanismos de autenticação dentro de uma aplicação, definindo e configurando dois componentes de backend distintos, nomeadamente “LOCAL” e “REMOTE”, que servem de base para lidar com pedidos de autenticação de utilizadores. Estes backends foram concebidos para serem facilmente integrados com várias estruturas e serviços de frontend, permitindo aos programadores incorporar facilmente opções de autenticação flexíveis e seguras nas suas aplicações.
A configuração inicial é a opção padrão empregada pelo Django, que concede ao usuário administrativo acesso ao painel de administração independentemente de quaisquer configurações feitas através do django-allauth.
Django-Allauth, uma aplicação Django que simplifica o registo de utilizadores e login em múltiplas contas através de serviços de terceiros tais como fornecedores de email/OAuth2, requer um backend de autenticação para funcionar eficazmente.
Passo 4: Adicione o ID do seu site
Para configurar o seu site corretamente, é essencial incluir um identificador único conhecido como ID do site no seu ficheiro de definições. Como ilustração, o seguinte trecho de código demonstra como isso pode ser feito:
SITE_ID = 1
A configuração padrão do painel administrativo inclui uma entrada para " http://example.com “. Os utilizadores têm a opção de alterar esta configuração ou criar um novo site, se assim o desejarem. Para tal, é necessário iniciar sessão na sua conta e aceder à aplicação “Sites” no painel de controlo.
Para obter o ID do site associado a um site Django específico usando a interface de linha de comando, siga estas etapas:1. Inicie o prompt de comando ou o terminal no seu computador.2Navegue até ao diretório onde instalou a estrutura Django.3. Execute o seguinte comando na CLI:csspython manage.py sites -output=fields site_id {nome-do-site}Substitua {nome-do-site}
pelo nome do site Django específico para o qual pretende obter o seu ID. O comando de gerenciamento sites
gera um arquivo JSON contendo informações sobre todos os sites configurados dentro do seu projeto Django, incluindo seus IDs correspondentes.
python manage.py shell
De facto, para executar o script acima mencionado no interpretador Python, é necessário primeiro abri-lo e depois introduzir o código. Este processo pode ser efectuado utilizando um ambiente de desenvolvimento integrado (IDE) ou uma interface de linha de comandos (CLI).
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 mencionado produzirá a nomenclatura e o identificador associados ao sítio Web em questão.
Passo 5: Configure suas URLs
Para integrar o Django Allauth na configuração de URLs do seu projeto, você deve primeiro garantir que um arquivo ‘urls.py’ exista no diretório do seu projeto. Se não existir, crie um e adicione o trecho de código necessário como mostrado abaixo:pythonfrom django.urls import pathfrom allauth.account.views import SignUpView, SignInViewapp_name = ‘myproject’ # substitua pelo nome do seu projetourlpatterns = [path(‘signup/’, SignUpView.as_view(), name=‘signup’),path(’login/’, SignInView.as_view(), name=‘login’)]Certifique-se de que substitui 'myproject'
pelo nome real do seu projeto e inclua quaisquer padrões de URL adicionais necessários, se necessário.
from django.urls import path, include
urlpatterns = [
# Djang-allauth url pattern
path('accounts/', include('allauth.urls')),
]
A utilização desta configuração permite-lhe iniciar o seu servidor de desenvolvimento e aceder a http://127.0.0.1:8000/accounts/ no seu navegador Web. Quando a configuração “DEBUG” é definida como “True”, os padrões de URL disponíveis do Django Allauth são exibidos.
Depois de ter completado os passos descritos anteriormente, o seu projeto está agora preparado para se submeter à autenticação social.
Como implementar o Google Login/Signup em seu aplicativo Django
Após a instalação e configuração do Django-Allauth, os usuários terão a capacidade de se autenticar usando suas contas de mídia social, incluindo aquelas fornecidas pelo Google.
Passo 1: Registar o fornecedor da conta social nas suas aplicações instaladas
Para incorporar uma conta de rede social nas definições da sua aplicação, é necessário incluir a plataforma de rede social específica como uma aplicação instalada na lista “INSTALLED\_APPS” localizada no ficheiro “settings.py” do seu projeto. Por exemplo, se pretender integrar o Google, basta adicionar “Google” à lista de aplicações instaladas. Da mesma forma, outras plataformas sociais, como o Instagram ou o X, também podem ser adicionadas a esta lista, bastando incluir os respectivos nomes.
INSTALLED_APPS = [
"""
Add your other apps here
"""
# Social account provider (google)
'allauth.socialaccount.providers.google',
]
Passo 2: Crie o seu ID de cliente e chave secreta no Google
Para prosseguir com esta tarefa, é imperativo que tenha uma conta Google válida. Caso já tenha uma configurada, consulte as directrizes seguintes:
⭐ Dirija-se à consola Google Cloud para criar um novo projeto. Primeiro, clique no menu suspenso mostrado na imagem abaixo:
⭐ Em seguida, clique em NOVO PROJETO :
⭐ Digite um nome para o seu projeto e, em seguida, clique no botão CRIAR:
⭐ Com o seu projeto selecionado, clique no menu de hambúrguer . Seleccione APIs & Services e, em seguida, Credentials :
⭐ Em seguida, clique na opção que diz CONFIGURE CONSENT SCREEN e seleccione External :
⭐ Na página seguinte, introduza um nome para a sua aplicação e inclua um e-mail, se necessário. Também pode explorar as configurações para alguma personalização. Uma vez concluído, clique em GUARDAR E CONTINUAR .
⭐ No menu do lado esquerdo, seleccione Credenciais . Depois disso, clique em CREATE CREDENTIALS e seleccione OAuth client ID .
⭐ Em seguida, selecione o Tipo de aplicativo e insira um nome para o mesmo. Para este tutorial, o tipo de aplicativo será Aplicativo Web .
⭐ Em seguida, adicione URIs para as origens de JavaScript autorizadas e URIs de redirecionamento autorizadas. O host do seu site deve ser a origem do 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 your-host-name/accounts/google/login/callback /. Para o modo de desenvolvimento, será: http://127.0.0.1:8000/accounts/google/login/callback/ . Clique em CREATE quando estiver pronto.
⭐ Depois de criar as credenciais, você pode copiar o ID do cliente ou o segredo do cliente para um local seguro ou baixá-los como arquivos JSON.
Passo 3: Adicione o seu ID de cliente e a chave secreta à sua aplicação Django
Depois de ter estabelecido as credenciais de acesso necessárias, dirija o seu navegador Web para " http://127.0.0.1:8000/admin " e, em seguida, clique em “Social applications” (Aplicações sociais) a partir das opções de menu disponíveis. De seguida, inicie a criação de uma nova aplicação social, seguindo as instruções descritas abaixo:
Ao adicionar um novo fornecedor de autenticação numa aplicação de software, é necessário especificar o serviço através do qual os utilizadores terão acesso às suas contas. Esta entidade é normalmente designada por “fornecedor” e pode variar consoante a plataforma que está a ser utilizada. Por exemplo, se a aplicação suportar a integração com as credenciais da conta Google, então o fornecedor adicionado corresponderá à Google. Da mesma forma, se a aplicação permitir a ligação com as informações de início de sessão do Snapchat, então o fornecedor escolhido pertencerá ao Snapchat.
Certamente, terei todo o gosto em ajudá-lo a encontrar um nome adequado e refinado para a sua nova aplicação social. Aqui estão algumas sugestões baseadas nos seus requisitos:1. SocialMingle - Este nome sugere que os utilizadores podem ligar-se e misturar-se com outros através da plataforma. É cativante e fácil de lembrar.2. ConnectionsHub - Este nome implica que a aplicação serve como um centro onde as pessoas podem estabelecer ligações entre si. Soa profissional e fiável.3. FriendFinderX - Este nome pode funcionar bem se a sua aplicação se concentrar em ajudar as pessoas a encontrar amigos ou potenciais parceiros românticos. No entanto, tenha em atenção a sua conotação, que pode não ser adequada a todos os públicos.4. LinkUpNow - Este nome enfatiza a ideia de
Forneça um segredo de cliente seguro e confidencial obtido da Google, que será utilizado como chave de encriptação para a nossa troca de informações sensíveis.
O processo de autenticação com o Google não é afetado pelo campo de chave especificado e deve ser ignorado.
Em última análise, escolha uma plataforma para integrar a ferramenta de redes sociais.
Passo 4: Testar a autenticação do Google
Termine sessão na sua interface administrativa e, em seguida, aceda a http://127.0.0.1:8000/accounts/login/ . Ao chegar a esta página, irá notar uma opção de início de sessão disponível através do Google.
Clique na opção acima mencionada para ser redireccionado para o ecrã de consentimento. Uma vez aí, seleccione uma conta adequada para prosseguir com o início de sessão.
Ao selecionar uma determinada conta, o utilizador será direcionado para http://127.0.0.1:8000/accounts/profile/ (doravante designado por “URL de destino”), que serve como prova do bom funcionamento da aplicação. Além disso, é possível que os utilizadores desenvolvam modelos personalizados que se desviem do conjunto padrão para melhor se adequarem às suas preferências e requisitos.
Melhorando o registro de usuários com autenticação social no Django
A autenticação social pode melhorar significativamente as experiências de registro de usuários em sua aplicação. Embora existam métodos alternativos para habilitar a autenticação no Django, seria prudente considerar sua adequação com base em seus requisitos específicos.