Como Configurar o Laravel Passport

(Bônus: customizando as credenciais de acesso)

Esron Silva
sysvale
3 min readMar 11, 2019

--

Photo by Richard Payette on Unsplash

Se você chegou até aqui muito provavelmente já sabe o que é o Passport e para quê ele serve. Mas, vamos fazer um breve resumo para os desavisados:

Passport provê autenticação para APIs via PHP OAuth 2.0 Server. Utilizando o Passport você terá toda a implementação de um servidor OAuth 2.0 em questão de minutos

Caso você tenha dúvidas sobre o que é OAuth 2.0, está é uma fonte inicial bem interessante.

Basicamente, utilizamos o Passport quando queremos abstrair o gerenciamento de tokens de acesso à nossa API.

Vamos ao que interessa

Podemos utilizar o composer para instalar o Passport com o seguinte comando:

Se você estiver utilizando uma base de dados relacional, execute o seguinte comando para criar as tabelas que serão utilizadas pelo Passport para gerenciar seus clientes e tokens de acesso:

Caso esteja utilizando uma base de dados não relacional, como o MongoDB, este passo é opcional.

Em seguida vamos utilizar o comando passport:install para executar o script que gera as chaves de criptografia utilizadas para criar tokens seguros e ainda criar dois clientes: um “personal access client” e um “password grant client”.

Vale ressaltar que “cliente” para o Passport não é a mesma coisa que usuário. Simplificando, um cliente possui vários usuários e cada usuário se conecta a um cliente. O usuário vai utilizar um cliente para acessar a sua aplicação.

Agora é necessário adicionar o trait Laravel\Passport\HasApiTokens ao seu model App\User. Este trait vai adicionar diversos métodos auxiliares ao seu model que vão te permitir inspecionar o usuário autenticado pelo token e seus escopos.

Seu model User deve ficar assim:

O próximo passo é adicionar a chamada às rotas do Passport no método boot do AuthServiceProvider. Este método faz o registros das rotas de acesso e criação de tokens e clientes para você.

Por fim, no arquivo config/auth.php, vamos configurar o driver de autenticação da api para que o Passport seja utilizado. Isso instrui sua aplicação a utilizar o TokenGuard do Passport quando alguma requisição de autenticação vier para a sua API.

É isso, você já pode utilizar o Passport para criar e gerenciar seus tokens de acesso.

Bônus: customizando as credenciais de acesso

Digamos que você já possui uma aplicação web em que seus usuários podem se autenticar via CPF ou e-mail (caso real). Logicamente você vai querer que na sua API os dois métodos de autenticação também funcionem. Porém, infelizmente o Passport não traz em sua documentação uma forma de configurar isso facilmente.

Depois de muita pesquisa no StackOverflow chegamos a esta solução:

Além das outras configurações já mencionadas do seu model User. Adicione o seguinte método:

Este é um dos métodos auxiliares que mencionamos lá no início. Ele recebe um identificador como parâmetro e, utilizando uma query do Eloquent ORM do Laravel ele busca algum usuário que possua este identificador como ‘cpf’ ou como ‘e-mail’. Aqui é possível trocar o CPF por username ou qualquer outro campo da sua tabela de usuário.

Agradeço pelo tempo que você gastou com essa leitura, confira outros tutoriais de Laravel, JavaScript e Docker aqui nas publicações da Sysvale. Não esqueça de recomendar este tutorial para os amigos e deixar um aplauso, caso tenha gostado.

Fontes

--

--

Esron Silva
sysvale

Computer Engineer — Web Developer — Amateur Writer