Resolvendo Problemas do JWT (Parte 2)

Macaroons são mais deliciosos do que biscoitos :)

Em uma de minhas postagens anteriores sobre problemas com tokens JWT, falei sobre um problema urgente que você pode descobrir aqui:

Conto de um problema sem solução com JWT! (Parte 2)

Resumindo o problema apenas por uma questão de brevidade: os poderes de um token JWT não podem ser reduzidos ao compartilhá-lo com outros serviços ou entidades. Digamos, por exemplo, se você deseja usar APIs do Google e deseja apenas que seus scripts de aplicativo leiam seus e-mails e extraiam algumas informações deles, mas não deseja que seus scripts de aplicativo façam qualquer outra coisa, como enviar e-mails ou ler ou compartilhar seus documentos com outros. Justo, certo! Mas se você pensar em compartilhar seu token JWT (ou o token OAuth) com seus scripts de aplicativo, acabará concedendo a eles todos os privilégios que possui! E não queremos esse direito ...

Portanto, a questão é: como podemos evitar esse problema em primeiro lugar?

Como delegamos as permissões usando um esquema onde há efeito de “atenuação”?

Pense por um momento ... Você pode pensar em algo que conserte os tokens JWT? ou Precisamos de alguma outra construção para isso?

Você precisa de Macaroons!

A resposta é: NÃO, não podemos consertar JWTs como estão para esta tarefa. Os tokens JWT afirmam a autorização, mas quando há várias partes envolvidas, nesses casos os JWTs não são adequados, como vimos no exemplo acima!

Então o que fazemos então?

MACARRÃO! Sim, não é brincadeira, usaríamos macaroons. Eles são gostosos e fazem o trabalho ...

Do Mockaroon no Unsplash

Macaroons são as construções que fornecem delegação e atenuação . Parece bom demais para ser verdade? Fica ainda melhor: os Macaroons também permitem que você expresse condições de “terceiros”!

Então, sobre o que é toda essa coisa gostosa e como pode resolver meus problemas?

Os Macaroons usam o HMAC do token que está sendo delegado e fazem uso de advertências que são as afirmações que ele faz (pense nisso como as declarações do JWT).

Então, a ideia é:

O servidor lhe envia um macaroon assinando-o com uma chave que ele possui. O HMAC do macaroon (usando a chave de assinatura) é anexado a ele, para garantir a integridade!

Agora, digamos que eu queira delegar os privilégios ao meu App Script, o que eu faria é adicionar outra afirmação, ou seja, adicionar outra advertência ao macaroon que tenho e assiná-lo usando o valor HMAC do macaroon existente.

Dessa forma, uma cadeia de confiança pode ser construída com as ressalvas (atuando como as afirmações).

Agora, quando um servidor verifica se as operações são permitidas para um determinado usuário, ele verifica o macaroon, verifica se está tudo correto, assinando as advertências do macaroon e chegando ao último nível. E se estiver tudo certo, então as permissões necessárias para acessar um serviço são verificadas em relação a todas as advertências. Se tudo correr bem, o usuário ou entidade obtém acesso para realizar a tarefa!

Bonito, não é :)

Conclusão

Esse problema com o JWT não pode ser resolvido de forma alguma! Portanto, precisamos de alguma outra construção para resolver isso e vimos como os Macaroons resolvem esse problema!

Espero que este post tenha ajudado você a aprender algo interessante. Para mim foi uma grande revelação saber que existe algo assim! Pessoalmente adorei :)

Posso fazer um post futuro no Macaroons e talvez detalhar mais e mostrar alguns exemplos com código de amostra. Soa interessante? Deixe-me saber se você gostaria de ver essa postagem :)

Gostou deste post? Deixe-me saber sua opinião nos comentários abaixo :)

A propósito, se você está gostando do meu trabalho e gostaria de me apoiar, confira minha página do Patreon:

Até mais!
Até a próxima vez, continue aprendendo e feliz hackeando :)

Suggested posts

TryHackMe uma plataforma perdida

TryHackMe uma plataforma perdida

Na verdade, eu estava positivamente convencido da plataforma TryHackMe. Porque, ao contrário dos CTFs, o conteúdo está permanentemente disponível e o modelo de preços é absolutamente razoável.

Como proteger o Spring Boot com autenticação e autorização JWT

Como proteger o Spring Boot com autenticação e autorização JWT

Olá alunos, aqui vamos aprender sobre a implementação de segurança de primavera com spring boot3.0 e JWT.

Related posts

Coletando OSINT para caçar ameaças

Coletando OSINT para caçar ameaças

Olá, entusiastas cibernéticos! Bem-vindo de volta ao OSINT para a série de caça a ameaças. No primeiro artigo, apresentei uma visão geral do OSINT e sua importância na caça às ameaças.

A revolução no local de trabalho: os principais especialistas discutem o trabalho híbrido e remoto

A revolução no local de trabalho: os principais especialistas discutem o trabalho híbrido e remoto

No atual cenário de negócios em rápida evolução, o conceito de trabalho híbrido e remoto ganhou um impulso sem precedentes. À medida que as empresas continuam a se adaptar às mudanças nas necessidades e expectativas de seus funcionários, especialistas de várias áreas se reuniram para discutir os benefícios, os desafios e o futuro dessa forma transformadora de trabalhar.

O primeiro livro de uma criança sobre como ficar chapado

O primeiro livro de uma criança sobre como ficar chapado

(Aviso - isso é sátira, com a intenção de ser alegremente subversivo - definitivamente não é para crianças) Você viu sua mãe e seu pai se esconderem na cozinha e fumarem aqueles cigarros fedorentos. Eles dizem a você.

That Threat Archive: Vol 7 Black Basta

That Threat Archive: Vol 7 Black Basta

No mundo interconectado de hoje, a ameaça de ataques cibernéticos é mais prevalente do que nunca. Criminosos cibernéticos e agentes de estado-nação estão constantemente buscando explorar vulnerabilidades e roubar dados valiosos, representando um risco significativo para organizações de todos os tamanhos.