(16) 981791110 contato@policast.studio

O que é autenticação JWT?

JWT (JSON Web Token) é um padrão para token de autenticação que permite enviar informações seguras entre duas partes de maneira compacta e autocontida. É um método de autenticação que permite que um usuário seja autenticado sem a necessidade de armazenar dados sobre ele em um banco de dados.

Quais são as vantagens da autenticação JWT?

A maior vantagem da autenticação JWT é que ela é muito rápida e escalável porque não precisa acessar o banco de dados para fazer a autenticação. Além disso, como os tokens JWT contêm informações criptografadas, você também pode usá-los para armazenar informações personalizadas sobre o usuário, como seu papel ou permissões.

Como implementar a autenticação JWT no Symfony?

Implementar autenticação JWT no Symfony é fácil. Há uma biblioteca de autenticação JWT Symfony pronta para uso que torna o processo muito simples. O primeiro passo é instalar a biblioteca com o Composer, usando o seguinte comando:

composer require firebase/php-jwt

Em seguida, você precisa configurar a segurança do Symfony. Crie um novo arquivo de segurança (security.yaml) na pasta de configuração e, na seção de autenticação, configure a autenticação de token JWT definindo um guard authentificator de token JWT. Aqui está um exemplo:


security:
firewalls:
api:
pattern: ^/api
stateless: true
guard:
authenticators:
- lexik_jwt_authentication.jwt_token_authenticator
# ...

O exemplo acima define uma firewall para endpoints API. Ela recebe um token JWT em cada solicitação. Note que a flag stateless: true indica que não precisamos Armazenar o estado da sessão na aplicação.

Finalmente, você precisa criar um controlador para lidar com as solicitações de autenticação e retornar um token JWT. Aqui está um exemplo:


/**
* @RestPost("/login", name="login")
*
* @return JsonResponse
*/
public function getTokenAction()
{
$user = $this->getUser();
$token = $this->get('lexik_jwt_authentication.encoder')
->encode([
'username' => $user->getUsername(),
'exp' => time() + 3600 // Tempo de expiração do Token JWT
]);

// Cria uma resposta JSON com o token JWT
return new JsonResponse(['token' => $token]);
}

O exemplo acima mostra um controlador que recebe um nome de usuário e senha e retorna um token JWT. Ele usa um codificador JWT para gerar o token e retorna-o em uma resposta JSON para o cliente.

Colocando tudo junto, o processo é muito simples e fácil de implementar. Tenha em mente que esta é apenas uma configuração básica. Você pode personalizar a configuração de acordo com suas necessidades.

Conclusão

Autenticação JWT é uma ótima maneira de autenticar usuários sem a necessidade de um banco de dados. Isso reduz o tempo de resposta do aplicativo e o torna altamente escalável. Espero que este artigo tenha ajudado você a entender os conceitos básicos deste tipo de autenticação e como implementá-lo em uma aplicação Symfony.