Autorização com OAuth2 no Laravel

Além da autenticação típica baseada em autenticação local, o Laravel também oferece uma maneira simples e conveniente de se autenticar com provedores OAuth usando o Laravel Socialite .

“O OAuth2 é um protocolo aberto que fornece fluxos de autorização específicos para aplicativos da Web, aplicativos de desktop, telefones celulares e dispositivos de sala de estar”, de acordo com a documentação oficial. A primeira versão, OAuth, também disponível para Laravel, é problemática para autenticação com dispositivos móveis, então evite-a.

O Socialite atualmente suporta autenticação com Facebook, Twitter, LinkedIn, Google, GitHub, GitLab, Bitbucket e outros cerca de 130 provedores de autorização. Basta você selecionar os que sejam de seu interesse.

Com o protocolo você aproveita para trocar o uso da tradicional autenticação com usuário e senha — armazenados em sua aplicação, também permitindo que seu público faça autenticação e/ou autorização a partir de provedores. É algo que pode trazer conforto ao usuário, que deixa de lado a criação de uma conta para acesso exclusivo a uma aplicação web ou para dispositivos móveis. O PHP não roda em dispositivos, móveis, mas fazendo uso de uma API, sua aplicação Laravel pode ter um frontend Angular, Vue.js ou React, combinando a isso o OAuth2.

Uma boa prática é usar frameworks maduros para autenticação. Assim você diminui riscos de ataque, pois códigos maduros passaram por variadas formas de ataques ao longo do tempo, com recursos mais difíceis de implementar até mesmo para um programador experiente. Há casos de grandes empresas que desenvolveram componentes de autenticação e, depois de grande investimento, foram alvo de suas vulnerabilidades. Para isso, o Laravel dispõe de autenticação com implementação simples, que depende poucos comandos e ajustes nas rotas. Com isso, o você cria tela de acesso, cadastro de usuários e recuperação de senha. Em seguida, os usuários com respectivas senhas já podem ser criados pela aplicação.

Instalação do Socialite

Com o Composer, adicione o Socialite ao projeto:

Configuração

Para continuar, você precisa fazer o cadastro de sua aplicação. No Facebook, vá ao site developer.facebook.com, faça o cadastro, informe os endereços dos termos de serviço e o de privacidade de sua aplicação. Ao criar a aplicação, pegue o ID e secret dela, em seguida inclua em config/services.php, informando também a URL de redirecionamento.

Roteamento

Agora, é a hora de autenticar os visitantes de sua aplicação. São 2 rotas: uma para redirecionar o usuário para o provedor OAuth e outra para receber o retorno de chamada do provedor após a autenticação. Então é acessar o Socialite, usando a fachadaSocialite, editando o arquivo app/Http/Controller/Auth/LoginController.php:

Enquanto o métodoredirectfaz o envio do usuário para o provedor OAuth, o método usercheca a solicitação recebida e pega as informações do usuário do provedor.

Então, defina agora as rotas para seus métodos de controle, em routes/web.php:

Autenticação sem estado

Com o método stateless você desabilita a verificação do estado da sessão, o que combina com autenticação social a uma API, no caso o Facebook:

Pegando os detalhes do usuário

Com a instância do usuário, você pode pegar mais alguns detalhes sobre ele:

Pegando detalhes do usuário de um token

Ao autenticar-se, o usuário permite que a API passe para sua aplicação um token que permite acesso a detalhes do cliente, com o método userFromToken:

A maioria das pessoas não usa senhas seguras, e elas tendem a usar o mesmo nome de usuário e senha para todas as suas contas — redes sociais, bem como contas bancárias. Os atacantes/agressores exploraram isso criando mash-ups atraentes. Eles não precisavam gastar ciclos caros com ataques de força bruta. Nós voluntariamente damos as nossas credenciais para ver coisas bacanas!

À medida que a web amadureceu, ficou claro que precisávamos de alguma forma de autorização delegada para proteger os usuários, permitindo-lhes dar acesso para outros sites aos seus dados. Assim, o OAuth surgiu.

Mas o OAuth possui vulnerabilidade de segurança. Então, ao implementá-lo cuidado com a Open redirectors. É recomendado validar a URL que vem do usuário e até mesmo usar uma white list de URLs para evitar dissabores.

Por falar em segurança, você deve usar o protocolo HTTPS, que criptografa o tráfego de dados de entre sua aplicação e o cliente, com isso você também evita alertas de navegadores como Chrome e Firefox, de que sua aplicação é insegura. Há opção de certificado de segurança grátis. Outra vantagem de sua implementação é um ganho no ranqueamento feito por sites de busca como Google, por exemplo, que valorizam seu uso.

De certa forma, o framework Laravel veio para dar uma nova vida à linguagem de programação PHP. De acordo com o site Wappalizer, Laravel é o framework web mais popular em linguagem PHP, além de se destacar entre os concorrentes com linguagem de programação com acesso a banco de dados.

Helder Jerônimo Leite Rangel

Written by

Graduando em Tecnologia em Sistemas para Internet no Instituto Federal de Educação da Paraíba (IFPB), MBA em Marketing pela Fundação Getúlio Vargas (FGV).

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade