e fala meu Vereador Beleza se você já desenvolve respeite-as provavelmente já ouviu falar ou já usa jwt Jason webtalkers o que talvez você não saiba é que existe Muita confusão sobre esse assunto muita gente com conceitos errados na cabeça e por isso eu resolvi gravar esse vídeo respondendo algumas perguntas muito importantes sobre jwt eu recebi essas perguntas no Instagram da algaworks se você ainda não segue a algaworks pelo Instagram eu vou deixar o link aqui na descrição desse vídeo segue a gente lá porque tem conteúdos exclusivos que a gente só pública lá beleza e a
primeira pergunta é jwt É um mecanismo de autenticação a resposta é não jwt não é um mecanismo não é um frame porque não é um modelo de autenticação e também não é um protocolo não é um frame de autorização jwt é apenas uma maneira segura e compacta para gente enviar informações entre aplicações basicamente é uma Pensa como uma string o sangue bem grande mesmo onde tem informações alto contidas dentro dessa stream por isso a gente chama de token transparente ou seja nós conseguimos enxergar informações dentro desse toque então pensa uma string de muito grande porém
as Spring significa alguma coisa Mas conseguimos enxergar informações que estão alto contidas dentro dessa stringhi Esse é o jwt só para ficar mais claro vamos dar uma olhada aqui tem um exemplo aqui ó na minha tela você tá vendo isso aqui é um token jwt e significa alguma coisa vamos deixa eu vou duplicar essa linha aqui para eu ir quebrando para você entendendo Olha tá vendo onde tem um ponto vou quebrar aqui tem um outro ponto aqui vou quebrar a linha aqui também só para ficar mais didático para você então aqui a gente tem o
header e se render é onde nós temos informações sobre o tipo do Token e o algoritmo criptográfico usado nós temos aqui o payload do Token que é onde ficam os dados que nós realmente queremos transmitir É porque tem umas informações que eu disse que ficam alto contida é o payload fica aqui nessa informações que nós vamos colocar não tô aqui e aqui é a assinatura que é assinatura que valida a integridade do Token é que foi gerada usando um algoritmo de criptografia então basicamente a estrutura de um token jwt esse aqui mas o topo incompleto
tá aqui né então eu vou copiar aqui ó e você sai site jwt.io vou colar aqui ó arrancou dente porque ele tá incomodado aqui né veja bem que ele não está criptografado tá gente consegue enxergar informações dentro desse toque então eu vou colar aqui e nós temos aqui do lado direito ele decodificado então temos aqui o header né que é onde nós temos é como eu disse informações sobre o token o algoritmo criptográfico né Poderia ter mais coisas também aqui é a parte mais interessante é no sentido de as informações que nós colocamos dentro do
Token né nós temos aqui por exemplo aqui é o que a gente chama de quem está cada chave valor aqui ó é o que a gente chama de cães são as informações realmente que estão dentro do toque né E a gente tem alguns tipos de cães ou não vou entrar em detalhes aqui nesse vídeo mas tem cães reservadas públicas privadas Mas enfim aqui o sub a gente está identificando Quem é o dono do toque geralmente é um Eyed do usuário esse clã que e até ele diz quando esse token jwt foi emitido né então o
time sempre aqui o horário que ele foi emitido temos aqui um trem para o nome no caso aqui o nome do usuário não é o nome do dono desse toque né do usuário para o qual estou em foi emitido e a gente pode ter outros cães aqui que a gente pode criar por exemplo a de mim gerente então aqui tô dizendo Esse é esse usuário para o qual esse torre representa ele é um gerente não tô dizendo que ele sim ou não é verdadeira um gerente ó tá vendo aqui embaixo que a gente tem aqui
para verificação da assinatura então esse Toquinho aqui ele foi ele foi gerado usando na hora que ele foi assinado né a gente usa um segredo para assinar ele então para eu validar se esse Toquinho ele realmente tá íntegro Nós temos que colocar aqui qual que é o segredo porque vejo que ele está inválido né se Natura invalida então eu vou colocar aqui o segredo que foi usado foi alga um dois três Ah mas você colocar um dois três quatro um dois três qualquer número para colocar aqui tá falando que Foi verificado na verdade é porque
essa ferramenta aqui vai cuidar para te contar eu quando a gente vai digitando aqui o segredo ele vai ao tô digitando aqui ele vai mudando ele vai ver assinando o topo está vendo mas não é isso que a gente quer então vou colocar aqui para você entender algo é um dois e vou copiar o toque colar de novo veja que ele tá invalido agora colocar aula um dois três aí vai gerar de novo e eu vou colar aqui ó é verificado tá vendo Então nós temos aqui o header openload.io ver faz cima turnê para verificar
assinatura uma segunda pergunta é quando utilizar o Alfie dois ou jwt eu acho que essa pergunta foi a que mais se repetiu sobre jwt versus o Alto Dois e isso aqui me deixa um pouquinho preocupado né porque a pessoa tá pedindo várias pessoas aí na pedindo para fazer uma comparação dizer qual que é melhor jwt ou Alto Dois porém essa pergunta não faz nenhum sentido mostra na verdade o desconhecimento sobre o assunto não tem nenhum problema tá Eu sei que a culpa não é sua se você também tinha essa confusão na cabeça o tem ainda
essa confusão na cabeça eu sei que tem algumas pessoas aí na internet que ensina o realmente de forma incorreta esses conceitos Mas você tá aqui para aprender isso aí né então vamos lá eu quero acabar com essa confusão na sua cabeça a realidade é que você não precisa escolher entre jwt e of 2 as coisas que você tem que escolher entre um e outro na verdade elas até se complementam né então vamos lá como eu já falei na pergunta anterior né jwt não é um modelo frango aqui de autenticação ou de autorização jwt no definir
fluxo de autorização de autenticação não tem nada disso para você deve ter é apenas uma forma segura compacta para você transmitir informações de usuário né os direitos de acesso tudo mais é uma string que como eu acabei de mostrar para você na pergunta anterior beleza tudo certo aqui já o Alfie dois ele é um protocolo ele é um Framework de autorização que definem definir vários fluxos de autorização para aplicações então você pode usar jwt com o Alto Dois sem nenhum problema mas não precisa usar jwt com Alto Dois é na verdade você pode usar o
Alfie dois por exemplo com um token ou pac lembrando jwt é um pouquinho transparente né com informações altos contidas que a gente consegue enxergar lado tá certo mas você pode usar também contou que em opaco opaco é uma Spring zona pensa senhora pega seu teclado começa a digitar qualquer coisa sem ver você e aleatória isso pode ser um toque um pouquinho Paco não significa nada simplesmente é uma Spring entre as coisas aleatória né com algum algoritmo para gerar ela é que não tem informações alto contidas dentro dela você pode usar esse tipo de Toquinho opaco
também com o Alto Dois tá então assim geralmente Hoje em dia as pessoas estão usando já deve ter com LOP dois mais de novo não é comparável né um outro você pode usar um e outro tranquilamente ou não tá você fica a seu critério usar ou não juntos beleza e a próxima pergunta é o seguinte cobertor King do jwt menos seguro que um alf2 bom esse aqui é mais uma daquelas confusões né como eu mostrei na pergunta anterior tem muito a ver com isso acredito que quem fez essa pergunta tem a mesma dúvida da pergunta
anterior acredito que nesse é parecido porém eu resolvi colocar essa pergunta aqui porque eu acho que a intenção dela é outra que pode ser interessante responder também eu acho que intenção dessa pergunta saber se um token jwt ele é menos seguro que um pouquinho opaco porque quando você implementa por exemplo a gente foca que bastante spring spring Security no caso quem tá falando aqui de segurança se você implementa isso off 2 com Spring Security sem jwt você vai usar um pouquinho opaco né e um pouquinho Paco ele ele é gerenciado no próprio servidor então tem
banco de dados né no servidor onde tem os toquinhos válidos né quando você usa jwt não existe esse esse armazenamento dos toquinhos no banco de dados simplesmente o token Já tem todas as informações que você precisa é a E aí essa pessoa deve tá querendo saber então se é mais seguro menos seguro usar jwt ou esse tom que eu pago com alf2 bom é como um token jwt ele é transparente a gente consegue enxergar as informações que estão dentro desse toque você tem que tomar cuidado para não colocar dados sensíveis dentro desse toque por exemplo
você não vai colocar a senha do usuário dentro do Toquinho alguma informação que é muito sensível para o seu negócio porque se você fizer isso aí sim você tem um risco de segurança já aqui para ler um toque é muito fácil você não precisa nem de uma de uma senha de um segredo para ler as informações dentro de um pouquinho somente assinado né então esse essa é uma questão não vejo que é um problema né de jwt Mas é mesmo um problema de quando a pessoa não entende acha que aquilo ali tá seguro não tô
aqui em por si só que ele não pode ser enxergado mas eu mostrei para você numa pergunta anterior aqui você pode ver as informações que estão dentro do torno só tomando cuidado que isso aí OK um outro ponto é que um token jwt ele só é invalidado quando o tempo de expiração dele é no passado Então quando você imite um pouquinho jwt você deve colocar um tempo de inspiração por exemplo a algumas horas alguns dias semanas meses ou até anos você pode colocar então o tempo de expiração se você imite um toque em contente de
inspiração muito longo e aí o que que é longo o que que é curto aí vai depender do seu negócio mas não sufoco você você me dá um toque com o tempo de expiração de um mês então se esse Tolkien no primeiro dia ele cai na mão de alguém que não deveria um hacker algum alguém que não poderia ter acesso a esse toque em ele vai ser válido ainda por um mês tem 30 dias 29 dias né Para esse cara fazer acessar dados né usar esse toque para acessar dados de repente numa p i Nossa
aplicação sem que ele na verdade poderia ter acesso Mas como ele tem o toque ele é portador desse Toquinho pode fazer isso então tem esse risco quando você já era um pouquinho sabe o que que você não consegue invalidar ele a não ser que seja pelo tempo de expiração e em algumas pessoas que implementam Blacklist no servidor Então sempre que você tenta usar o token para acessar alguma informação na sua pe antes é chegado numa Blacklist para ver se esse Tolkien É pode ser usado ou não só que quando a gente faz isso a gente
tá trazendo o estado para nossa aplicação que a justamente o motivo porque existe jwt para não manter estável na nossa no nosso servidor né um token jwt ele é por si só já ele já tem esse conceito de seis caixas né porque lá dentro dele já tem todas as informações que a gente precisa se você implementa um Blacklist você vai ter acabar tendo um servidor centralizando tudo isso aí então tem um pouco dessa polêmica dessa discussão se isso é uma boa prática ou não tá agora o token opaco e é uma Spring entre as suas
aleatória né que não tem informações dentro dela dentro desse dentro desse tô aqui é porém a gente tem um servidor que que centraliza né que sabes estou aqui em Carvalho ou não então basicamente esse servidor vai ter um banco de dados independente onde seja ele vai ter um banco de dados onde os toquinhos vários estão nesse banco de dados se alguma aplicação recebe um pouquinho e quer saber se tentar válido essa aplicação tem que perguntar para o servidor que armazena esses toques para saber se excitou quem tá válido ou não então aparentemente é mais seguro
porque tem alguém né um servidor Centralizado porém a gente tem a questão de escalar Nossa aplicação né a gente quer escalar Nossa aplicação a gente vai ter que ficar lá esses servidores né vai ter que replicar esse servidores aqui que faz falência atualização dos Torrões então é mais uma questão de uma dificuldade de escalar aplicação não que seja impossível tá mais é e eu acredito assim as duas possibilidades com jwt um pouquinho Paco as duas possibilidades podem ser seguras só tem que tomar os cuidados tá e a próxima pergunta é o seguinte usar token opaco
fere a Constant state lindoeste então jwt é obrigatório é uma boa pergunta também mas muito polenta na minha opinião parece que féria consciente sim né porque se a gente tá usando o Toquinho pa como eu acabei de falar de responder na última pergunta né tô com meu pai aqui nós precisa de um servidor centralizando de um banco de dados é para armazenar esses toquinhos a gente tá mantendo o estado né então aparentemente férias essa constroem sim mas se você precisar de estado por algum motivo se você precisa invalidar o toque em na momento que você
precisa que você quer mesmo que você vai fazer vai ter que seguir nessa solução então não me preocuparia muito com isso não tá eu acho que você quer um detalhe que e é se você entender o que que você tá fazendo você entender o que que isso implica na escala habilidade ou sua aplicação Como eu disse não que impede mais dificulta um pouco tô sem entender isso eu acho que tá tudo bem porque se você usar jwt implementando uma Blacklist Como eu disse que algumas pessoas implementam você também tá trazendo estado para sua para sua
aplicação no caso dos toquinhos né então eu acredito que se você precisa do Estado de repente os atores têm opaco Pode ser sem uma uma solução a próxima pergunta é a seguinte podemos criptografar com o pai de chave pública e privada beleza Boa pergunta também então aqui quer saber se a gente pode criptografar um Toyota deve ter com o par de Chaves né mas antes de responder vamos revisar uma coisa que é importante tá que um jwt pode usar jws para fazer assinatura do toque Então sempre que eu tô falando aqui sobre esse na torre
só já WT não tem como assinar tá especificação da jwt não disse isso que e agora quem disse isso É jws tá então é uma especificação do mesmo conjunto de especificações né então com jws a gente consegue assinar um toque ou seja openload né os dados do toque são lidos facilmente como eu mostrei para você já no início desse vídeo porém para a gente saber se estou em trabalho a gente precisa do segredo de uma chave para poder validar se ele tá inteiro né Beleza agora a gente pode também usar JW e para criptografar então
já que ele trocava o conteúdo do toque Dessa forma não vai ser acessível nem para leitura a não ser que você tenha a chave para fazer essa leitura uso mais comum que a gente vê assim no dia a dia é usando jws tá JW e é bem menos comum esse uso beleza dito isso quando a gente usa jwt assinado com jws sem a você pode usar um par É verdade você pode dar vários algoritmos existem vários algoritmos algoritmos criptográficos para você fazer assinatura do seu toque em você pode usar o mais simples que é o
h Mac né que é uma criptografia simétrica ou seja basicamente a gente tem um segredo que é tipo uma senha mesmo segredo para poder fazer assinatura do toque o problema disso é que para você verificar integridade do Token Você também precisa desse segredo do mesmo segredo Então imagina o seguinte aplicação que emite o token ele tem um segredo vamos imaginar que segredo seja algo um dois três e ele emite ottokim se uma outra aplicação terceira recebe esse toque e precisa validar a integridade de se toquem ele vai precisar desse segredo algo um dois três só
que com esse segredo ele consegue também emitir novos toquinhos então se você não confia nessa aplicação terceira é difícil usar essa solução porque ele vai ter acesso ela vai ter acesso a ao seu segredo que a partir dessa e 29 estou aqui beleza então essa é uma solução que funciona em determinados casos Mas tem que tomar cuidado porque você não vai ficar distribuindo o seu segredo para aplicações que você não confia e uma outra forma é você usar um par de Chaves usar criptografia assimétrica ou seja uma chave pública e uma chave privada então basicamente
quando aplicação vai emitir um token ela tem que ter acesso a chave privada somente quem tem acesso a chave privada consegue emitir um pouquinho assinado tá então você usar a chave privada para assinar esse topo Outras aplicações que recebem esse tô aqui em que precisa validar a integridade desse toque vão usar a chave pública e com a chave pública você não consegue emitir um novo toque somente para a chave privada então você pode distribuir tranquilamente a chave pública para aplicações mesmo que você não confia 100% distribui a chave pública porque com essa chave pública essas
aplicações é verificar integridade do toque porém a chave privada só fica com o servidor que você confia que é o que emite os toques logicamente essa chave privada Você tem que manter é lá em segredo Tem que manter ela em um local bem seguro e a próxima pergunta é Qual a forma correta de invalidar um toque em legal para você e validar um token jwt eu já te falei um pouco disso nas perguntas anteriores você deve determinar um tempo de inspiração para esse toque então é assim que você invalida é só tomando o cuidado de
não colocar um tempo muito longo a ponto de que se estou aqui em cair nas mãos de alguém que não deveria né Vocês Tolkien vazar você não vai ter um problema por muito tempo então é claro que você tem que tomar todos os cuidados as aplicações que usam esse torno tem que tomar todos os cuidados para armazenar esse tô aqui no lugar no local seguro É mais assim é isso coloca o tempo de expiração agora como eu já disse também tem pessoas que implementam Black é né se eu estou aqui em vazar você adiciona esse
Toquinho jwt na sua blacklist e ele não pode ser mais usado porém quando você faz isso tem o problema criar problema né entre aspas o problema de você tá trazendo o estado de novo para aplicação né você vai ter que centralizar isso em algum lugar vai ter que ter um banco de dados com esse truques e aí para quem mesmo que eu tô usando JW ter que você já não usa um pouquinho opaco mas enfim é só uma algo para você refletir se você precisa disso se realmente você deveria tá usando jwt né e a
última pergunta é a seguinte no especialista Spring West ensina a usar jwt ensina assim se você ainda não conhece o especialista Spring West é o nosso curso online em ver se vo de modelagem desenvolvimento de rest api is com Spring nesse curso você vai aprender a implementar authorizationserverconfigureradapter server também com Alpha 2 né você vai aprender a o token sopax e tokens transparentes com jwt fazer assinatura do Token com assinar assinatura é simétrica e assimétrica com H Mac e também com chave pública e privada nem um par de Chaves enfim essa parte de segurança são
dois módulos é muito dentro muito dentro mesmo esse é o conteúdo mais completo que existe no mercado de modelagem desenvolvimento de spring West e essa parte de segurança tá muito top mesmo lá dentro do curso tá então se você tiver interesse em saber mais sobre essa imersão sabe mais sobre a próxima turma será notificado também quando a gente abrir vagas para próxima turma eu vou deixar um link aqui embaixo desse vídeo para você se cadastrar na lista de espera beleza Olha isso você tem alguma outra dúvida sobre jwt escreve aqui para mim quem sabe eu
gravo um outro vídeo para responder mais dúvidas sobre jwt um abraço e até mais