Arquitetura de Software

Conteúdo produzido pelas turmas de Arquitetura de Software - Computação @ UFCG

jsonwebtoken - Documentação arquitetural

Autores

Este documento foi produzido por Jonathan Allisson De Lima Silva.

Descrição Arquitetural – jsonwebtoken

Este documento descreve parte da arquitetura do projeto jsonwebtoken. Essa descrição foi baseada principalmente no modelo C4.

Descrição Geral

JSON Web Token é uma estrutura de dados no formato json, compacto, seguro e pode trafegar na URL sem prejudicar seu conteúdo. Seu conteúdo é composto por claims. As Claims são um conjunto de chave/valor. Fornecem ao client ou API informações sobre o usuário que está consumindo seus serviços. Ele comumente utilizado para transferir dados através do protocolo HTTP.

Objetivos

Oferecer uma forma simples e compacta de transportar dados sigilosos entre aplicações com restrição de espaço como de headers de autorização HTTP e parâmetros de consulta URI. Exemplos de utilização seriam em aplicações com sistemas de autorização e trocas de informações com segurança.

Contexto

jsonwebtoken é uma biblioteca onde os desenvolvedores de software a importam em seus projetos para que possam utilizar suas funcionalidades. Ela é muito utilizada em web APIs REST para fins de autenticação e trocas de dados. Seus dados transportados vão estar codificados em base64 onde será necessário ter um SECRET para ter acesso ao conteúdo completo do arquivo, além de saber caso alguém tenha tentado fraudar o conteúdo.

Diagrama de Contexto

Containers

Por se tratar de uma biblioteca e não de um software, ele não possui armazenamento de dados local e basicamente possui apenas um container que oferece seus recursos utilizáveis.

Implantação

Pode ser instalado através de algum gerenciador de pacotes(como yarn ou npm) ou por CDN, no caso dessa biblioteca específica, ela é compatível com projetos node. O diagrama ilustra apenas um simples caso de troca de dados via requisição HTTP entre projetos, os quais podem estar no navegador ou em um servidor.

Diagrama de Implantação

Componentes

Jsonwebtoken possui os seguintes componentes, para fins de compreensão, quando me referir a biblioteca, chamarei de jsonwebtoken e quando for o token em si, de jwt:

  • jsonwebtoken: Fornece uma instância com todas as funcionalidade da biblioteca.
  • Sign: Responsável pela montagem do jwt com as dados do header, payload, signature e o secret.
  • Verify: Responsável pela verificação se o jwt, apontando qualquer falha ou se já foi expirado.

Diagrama de Componentes

Visão de Informação

Com o intuito de descrever informações importantes que são manipuladas, coletadas, armazenadas e destribuídas pelo sistema, descrevi com o gráfico abaixo, como é realizada a criação de um token jwt com os dados fornecidos e as ferramentas da biblioteca.

Diagrama de Máquina de Estados