Como configurar autenticação JWT com Symfony 4

Walderlan Sena
Apr 1 · 2 min read

Aprenda a implementar autenticação JWT na sua aplicação php

Configurando o LexikJWTAuthenticationBundle ?

O requer que sua aplicação tenha um configurado corretamente. Você pode usar o fornecido pelo (recomendado), criar um provedor de usuários customizado.

Ao definir a utilização do com o componente , só preciso criar uma entidade chamada User, que implementa ou :

src/Entities/User.php

Agora vamos gerar nosso banco e a entidade com o comando:

$ php bin/console doctrine:database:create
$ php bin/console doctrine:schema:update --force

Instalando o JWTAuthentcationBundle

Adicione o pacote lexik/jwt-authentication-bundle no arquivo , ou execute o comando:

composer req "lexik/jwt-authentication-bundle"

Gerando as chaves necessárias

$ mkdir config/jwt
$ openssl genrsa -out config/jwt/private.pem -aes256 4096
$ openssl rsa -pubout -in config/jwt/private.pem -out config/jwt/public.pem

Caso o primeiro comando force você a inserir o uso da senha a seguir para obter a chave privada descriptografada.

$ openssl rsa -in config/jwt/private.pem -out config/jwt/private2.pem
$ mv config/jwt/private.pem config/jwt/private.pem-back
$ mv config/jwt/private2.pem config/jwt/private.pem

Configurando as rotas

config/routes.yml
src/Controller/AuthController.php

Configurando o security

Por fim, precisamos informar ao sistema de segurança do sobre nosso provedor e autenticador:

config/packages/security.yaml

Vamos testar !

Criando um novo usuário

$ curl -X POST http://localhost:8000/register -d _username=walderlan -d _password=12345
-> User walderlan successfully created

Obtendo um novo token JWT

$ curl -X POST -H "Content-Type: application/json" http://localhost:8000/login_check -d '{"username":"walderlan","password":"12345"}'
-> { "token": "[TOKEN]" }

Exemplo de acesso a rotas seguras:

$ curl -H "Authorization: Bearer [TOKEN]" http://localhost:8000/api
-> Logged in as walderlan

Até mais ! :)

Artigo de referência:

https://emirkarsiyakali.com/implementing-jwt-authentication-to-your-api-platform-application-885f014d3358

Walderlan Sena

Written by

Systems Analyst and Developer, Security Analyst, Writer, Speaker, Enthusiast IoT, SI and FACs. PHP Evangelist, CEO of the company @mentesvirtuaissena