{"id":40826,"date":"2023-04-25T10:35:00","date_gmt":"2023-04-25T13:35:00","guid":{"rendered":"https:\/\/www.locaweb.com.br\/blog\/?p=40826"},"modified":"2024-07-30T17:39:51","modified_gmt":"2024-07-30T20:39:51","slug":"jwt-vantagens-json-web-token","status":"publish","type":"post","link":"https:\/\/www.locaweb.com.br\/blog\/temas\/codigo-aberto\/jwt-vantagens-json-web-token\/","title":{"rendered":"JWT: vantagens ao usar o JSON Web Token"},"content":{"rendered":"\n<p class=\"has-text-align-center\"><em>Estrutura JWT garante integra\u00e7\u00e3o entre aplicativos e servidores ao fornecer maneira segura de transmitir informa\u00e7\u00f5es confidenciais<\/em><\/p>\n\n\n\n<p>O mercado de aplicativos e servidores conectados n\u00e3o para de crescer. Com a grande variedade de plataformas e as preocupa\u00e7\u00f5es com a <a href=\"https:\/\/www.locaweb.com.br\/blog\/temas\/codigo-aberto\/como-melhorar-a-seguranca-do-seu-site\/\" target=\"_blank\" rel=\"noreferrer noopener\">seguran\u00e7a<\/a> cibern\u00e9tica, solu\u00e7\u00f5es que ofere\u00e7am acesso confi\u00e1vel s\u00e3o fundamentais para garantir a integra\u00e7\u00e3o das ferramentas. Nesse contexto, <strong>o JSON Web Token (JWT) \u00e9 uma maneira interessante de trabalhar com autoriza\u00e7\u00e3o e autentica\u00e7\u00e3o em aplica\u00e7\u00f5es.<\/strong><\/p>\n\n\n\n<p><strong>A estrutura JWT possibilita a autoriza\u00e7\u00e3o de acesso a aplicativos da web e m\u00f3veis<\/strong>, sendo uma maneira segura de transmitir informa\u00e7\u00f5es confidenciais, como credenciais de usu\u00e1rio, entre diferentes sistemas, podendo ser transmitidos por meio de HTTP, HTTPS, WebSocket e outros protocolos da web.<\/p>\n\n\n\n<p>Com mais de 145 bilh\u00f5es de tokens criados, <strong>o JWT \u00e9 uma escolha popular para muitos desenvolvedores e empresas que procuram solu\u00e7\u00f5es de autentica\u00e7\u00e3o confi\u00e1veis<\/strong> em diferentes plataformas, como sistemas m\u00f3veis, da web e de back-end. Confira este guia completo sobre JWT e saiba como o implementar.<\/p>\n\n\n\n<p><em><a href=\"https:\/\/www.locaweb.com.br\/blog\/produtos\/certificado-ssl\/certificado-ssl-para-que-serve\/\" target=\"_blank\" rel=\"noreferrer noopener\">+ Certificado SSL: a seguran\u00e7a do seu site em suas m\u00e3os<\/a><\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>O que \u00e9 JWT?<\/strong><\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"812\" height=\"500\" src=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2023\/04\/estrutura-jwt-01.jpg\" alt=\"Na imagem aparece a m\u00e3o de um homem segurando uma maquininha de pagamento e outro homem aproximando o seu smartwatch do aparelho. \" class=\"wp-image-40830\" srcset=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2023\/04\/estrutura-jwt-01.jpg 812w, https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2023\/04\/estrutura-jwt-01-500x308.jpg 500w, https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2023\/04\/estrutura-jwt-01-768x473.jpg 768w, https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2023\/04\/estrutura-jwt-01-150x92.jpg 150w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><figcaption class=\"wp-element-caption\">Embora n\u00e3o seja comum, JWT pode ser usado em integra\u00e7\u00e3o \u00e0 tecnologia NFC. (Fonte: Ivan Samkov\/Pexels\/Reprodu\u00e7\u00e3o)<\/figcaption><\/figure>\n<\/div>\n\n\n<p><strong>JWT \u00e9 um padr\u00e3o aberto de mercado definido pela RFC 7519 como um formato compacto e autossuficiente para transmitir informa\u00e7\u00f5es entre as partes como um objeto JSON.<\/strong> O recurso \u00e9 frequentemente usado na autentica\u00e7\u00e3o e na autoriza\u00e7\u00e3o em aplicativos da web e m\u00f3veis.<\/p>\n\n\n\n<p>Antes dele, era comum que sistemas usassem sess\u00f5es baseadas em cookies para autenticar usu\u00e1rios. No entanto, esse m\u00e9todo apresentava algumas limita\u00e7\u00f5es, como a depend\u00eancia do servidor para manter um estado de sess\u00e3o e a dificuldade de escalabilidade em sistemas distribu\u00eddos.<\/p>\n\n\n\n<p>O padr\u00e3o foi criado em 2010 por um grupo de especialistas em seguran\u00e7a da informa\u00e7\u00e3o que buscavam um m\u00e9todo mais simples, seguro e escal\u00e1vel para autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o em sistemas distribu\u00eddos. Para tanto, a <strong>estrutura JWT usa uma abordagem baseada em tokens que permite que usu\u00e1rios se autentiquem apenas uma vez e acessem v\u00e1rios servi\u00e7os sem precisar se autenticar novamente.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Por que usar JWT?<\/strong><\/h2>\n\n\n\n<p>O uso de JWT para autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o em sistemas distribu\u00eddos d\u00e1 mais efici\u00eancia para as opera\u00e7\u00f5es. Ele n\u00e3o exige que o servidor mantenha um estado para autenticar o usu\u00e1rio, o que \u00e9 \u00fatil em sistemas distribu\u00eddos em grande escala. O recurso \u00e9 port\u00e1til, funcionando em diversas plataformas, e pode ser transmitido em diferentes protocolos da web.<\/p>\n\n\n\n<p>A seguran\u00e7a \u00e9 outro ponto forte da estrutura JWT, que usa <a href=\"https:\/\/www.locaweb.com.br\/blog\/temas\/codigo-aberto\/seguranca-da-informacao-boas-praticas\/\" target=\"_blank\" rel=\"noreferrer noopener\">criptografia<\/a> para garantir que apenas as partes autorizadas possam acessar as informa\u00e7\u00f5es transmitidas no token. <strong>Pode ser protegido contra ataques de intercepta\u00e7\u00e3o e falsifica\u00e7\u00e3o de tokens<\/strong>, tornando-se uma op\u00e7\u00e3o segura e confi\u00e1vel para autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o.<\/p>\n\n\n\n<p>A escalabilidade \u00e9 outra vantagem, j\u00e1 que n\u00e3o exige que o servidor mantenha um estado para autenticar o usu\u00e1rio. Isso significa que pode ser facilmente escal\u00e1vel em sistemas distribu\u00eddos em grande escala.<\/p>\n\n\n\n<p>Por\u00e9m, pode n\u00e3o ser a melhor op\u00e7\u00e3o para todos os cen\u00e1rios. Alguns sistemas antigos podem ser incompat\u00edveis com a ferramenta que, embora seja compacta, pode aumentar a carga \u00fatil nas solicita\u00e7\u00f5es HTTP e reduzir o desempenho do aplicativo. Outra desvantagem \u00e9 a depend\u00eancia da chave secreta para assinar e criptografar o token.<\/p>\n\n\n\n<p><strong>Leia tamb\u00e9m<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.locaweb.com.br\/blog\/temas\/codigo-aberto\/como-usar-o-comando-curl\/\" target=\"_blank\" rel=\"noreferrer noopener\">Como usar o comando cURL?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.locaweb.com.br\/blog\/temas\/codigo-aberto\/12-apis-que-todo-desenvolvedor-precisa-conhecer\/\" target=\"_blank\" rel=\"noreferrer noopener\">12 APIs que todo desenvolvedor deve conhecer<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.locaweb.com.br\/blog\/temas\/codigo-aberto\/importancia-do-certificado-ssl\/\" target=\"_blank\" rel=\"noreferrer noopener\">Qual \u00e9 a import\u00e2ncia do certificado SSL?<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Qual \u00e9 a estrutura JWT?<\/strong><\/h2>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"812\" height=\"500\" src=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2023\/04\/estrutura-jwt-02.jpg\" alt=\"Mo\u00e7a em frente a um computador. \" class=\"wp-image-40831\" srcset=\"https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2023\/04\/estrutura-jwt-02.jpg 812w, https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2023\/04\/estrutura-jwt-02-500x308.jpg 500w, https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2023\/04\/estrutura-jwt-02-768x473.jpg 768w, https:\/\/www.locaweb.com.br\/blog\/wp-content\/uploads\/2023\/04\/estrutura-jwt-02-150x92.jpg 150w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/><figcaption class=\"wp-element-caption\">Formato compacto e vers\u00e1til do JWT o torna uma escolha popular entre desenvolvedores. (Fonte: Kelly Sikkema\/Unsplash\/Reprodu\u00e7\u00e3o)<\/figcaption><\/figure>\n<\/div>\n\n\n<p><strong>A estrutura JWT \u00e9 uma string codificada que consiste em tr\u00eas partes separadas por pontos com uma estrutura b\u00e1sica formada por header, payload e signature<\/strong>. Essa estrutura simples torna f\u00e1cil a transmiss\u00e3o de informa\u00e7\u00f5es entre diferentes sistemas e plataformas.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>O header (cabe\u00e7alho) cont\u00e9m informa\u00e7\u00f5es sobre o tipo de token (JWT) e o algoritmo de criptografia usado para assinar o token.<\/li>\n\n\n\n<li>A payload (carga \u00fatil) tem os dados que ser\u00e3o transmitidos no token, como informa\u00e7\u00f5es do usu\u00e1rio ou outras informa\u00e7\u00f5es de autoriza\u00e7\u00e3o.<\/li>\n\n\n\n<li>J\u00e1 a signature (assinatura) \u00e9 usada para verificar a integridade do token e garantir que ele n\u00e3o tenha sido alterado durante a transmiss\u00e3o.<\/li>\n<\/ul>\n\n\n\n<p>O header e o payload s\u00e3o codificados em base64, enquanto a signature \u00e9 calculada usando uma chave secreta e \u00e9 adicionada ao final do token no mesmo formato de codifica\u00e7\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Onde o JWT fica armazenado?<\/strong><\/h2>\n\n\n\n<p>A estrutura JWT \u00e9 geralmente armazenada do lado do cliente, em um cookie ou armazenamento local (como o localStorage do navegador) para ser enviado de volta ao servidor em cada requisi\u00e7\u00e3o. O servidor pode decodificar o token para verificar a autenticidade e a autoriza\u00e7\u00e3o do usu\u00e1rio.<\/p>\n\n\n\n<p>\u00c9 importante observar que o JWT cont\u00e9m informa\u00e7\u00f5es confidenciais, portanto, \u00e9 crucial garantir que ele seja armazenado com seguran\u00e7a e criptografado, se necess\u00e1rio.<\/p>\n\n\n\n<p>A configura\u00e7\u00e3o das op\u00e7\u00f5es de seguran\u00e7a de cookies merece um cuidado extra para evitar vulnerabilidades de ataques maliciosos, como Cross-site Request Forgery (CSRF), que envia solicita\u00e7\u00f5es n\u00e3o autorizadas entre um usu\u00e1rio e um site confi\u00e1vel, e o Cross-site Scripting (XSS), que introduz um c\u00f3digo malicioso em aplica\u00e7\u00f5es web.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Como implementar o JWT?<\/strong><\/h2>\n\n\n\n<p>A implementa\u00e7\u00e3o da estrutura JWT pode variar dependendo da linguagem de programa\u00e7\u00e3o, do <a href=\"https:\/\/blog.locaweb.com.br\/temas\/codigo-aberto\/o-que-e-framework\/\" target=\"_blank\" rel=\"noreferrer noopener\">framework<\/a> e do ambiente de trabalho. H\u00e1 muitas bibliotecas e ferramentas dispon\u00edveis para ajudar a implementar o token em diferentes plataformas. Contudo, as principais etapas para implementar o recurso em um sistema de autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o s\u00e3o:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>cria\u00e7\u00e3o<\/strong> \u2014 envolve criar um objeto JSON com as informa\u00e7\u00f5es desejadas, como o ID do usu\u00e1rio e o tempo de expira\u00e7\u00e3o. Em seguida, \u00e9 necess\u00e1rio assinar o token usando uma chave secreta para garantir que ele n\u00e3o seja alterado durante a transmiss\u00e3o;<\/li>\n\n\n\n<li><strong>armazenamento<\/strong> \u2014 a estrutura JWT deve ser armazenada no lado do cliente, em um cookie ou armazenamento local, para que possa ser enviada de volta ao servidor em cada requisi\u00e7\u00e3o. Certifique-se de armazenar o token com seguran\u00e7a e criptografado, se necess\u00e1rio;<\/li>\n\n\n\n<li><strong>verifica\u00e7\u00e3o de autenticidade<\/strong> \u2014 no servidor, \u00e9 necess\u00e1rio verificar se o token \u00e9 aut\u00eantico e n\u00e3o foi alterado; para tanto, a assinatura deve ser conferida a partir da mesma chave secreta usada para assin\u00e1-la na cria\u00e7\u00e3o;<\/li>\n\n\n\n<li><strong>decodifica\u00e7\u00e3o<\/strong> \u2014 uma vez que a autenticidade do token foi verificada, o JWT pode ser decodificado para obter as informa\u00e7\u00f5es armazenadas nele, como o ID do usu\u00e1rio;<\/li>\n\n\n\n<li><strong>uso das informa\u00e7\u00f5es<\/strong> \u2014 com as informa\u00e7\u00f5es do token decodificadas, voc\u00ea pode usar essas informa\u00e7\u00f5es para autorizar e autenticar o usu\u00e1rio no sistema.<\/li>\n<\/ol>\n\n\n\n<div class=\"user-cta-block\" style=\"background-color:#2E333C;\"><p>Proteja todos os visitantes do seu site. Conhe\u00e7a as vantagens do SSL Locaweb.<\/p><a class=\"user-cta\" style=\"background-color: #00acc8\n;\" href=\"https:\/\/bit.ly\/3As1k6j:;\" target=\"_blank\" rel=\"noopener\">Saiba mais<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Estrutura JWT garante integra\u00e7\u00e3o entre aplicativos e servidores ao fornecer maneira segura de transmitir informa\u00e7\u00f5es confidenciais O mercado de aplicativos e servidores conectados n\u00e3o para de crescer. Com a grande variedade de plataformas e as preocupa\u00e7\u00f5es com a seguran\u00e7a cibern\u00e9tica, solu\u00e7\u00f5es que ofere\u00e7am acesso confi\u00e1vel s\u00e3o fundamentais para garantir a integra\u00e7\u00e3o das ferramentas. Nesse contexto, [&hellip;]<\/p>\n","protected":false},"author":24,"featured_media":40829,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-40826","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-aberto"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/40826","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/comments?post=40826"}],"version-history":[{"count":6,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/40826\/revisions"}],"predecessor-version":[{"id":46425,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/posts\/40826\/revisions\/46425"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/media\/40829"}],"wp:attachment":[{"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/media?parent=40826"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/categories?post=40826"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.locaweb.com.br\/blog\/wp-json\/wp\/v2\/tags?post=40826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}