3.3 KiB
3.3 KiB
Plano minimo de implementacao — comunicacao entre servicos com JWT
Objetivo
Implementar comunicacao minima entre servicos distribuidos onde:
- o Auth Service autentica o usuario
- o Auth Service emite o JWT
- os outros servicos validam o JWT localmente
- um servico pode chamar outro em nome do usuario, repassando o mesmo token
- cada servico identifica o usuario autenticado pelo
sub
Arquitetura minima
Auth Service
Responsavel por:
- login
- refresh token
- emissao do JWT
- distribuicao da chave publica para validacao nos demais servicos
Outros servicos
Responsaveis por:
- receber
Authorization: Bearer <token> - validar JWT localmente
- extrair claims
- montar contexto do usuario autenticado
Comunicacao entre servicos
Quando um servico chamar outro em nome do usuario:
- repassar o mesmo header
Authorization
Contrato minimo do JWT
Exemplo:
{
"sub": "uuid-do-usuario",
"iss": "https://auth.seusistema.com",
"aud": "internal-apis",
"iat": 1776110000,
"exp": 1776110900
}
Claims minimas
sub: identificador do usuarioiss: emissoraud: audienciaiat: emissaoexp: expiracao
Regra importante
O identificador confiavel do usuario deve ser sempre o sub.
Nao confiar em:
user_idno bodyx-user-idem header customizado- qualquer identificador separado do token
Escolhas tecnicas minimas
Algoritmo
RS256
Assinatura
- Auth assina com chave privada
- demais servicos validam com chave publica
Tempo de vida (MVP)
- access token: 15 minutos
- refresh token: 7 dias
Endpoints minimos do Auth
POST /auth/login
POST /auth/refresh
Login
Retorna:
{
"access_token": "jwt_aqui",
"refresh_token": "refresh_aqui",
"token_type": "Bearer",
"expires_in": 900
}
Refresh
Recebe refresh token e retorna novo access token + novo refresh token.
Middleware minimo em cada servico
Passos:
- ler
Authorization - extrair bearer token
- validar assinatura
- validar
exp - validar
iss - validar
aud - extrair claims
- montar usuario autenticado no contexto da requisicao
Resultado esperado no contexto:
{
"id": "uuid-do-usuario"
}
Rotas protegidas minimas para teste
GET /profile/meGET /dashboard
Cada rota deve:
- exigir token valido
- extrair
sub - retornar dados do usuario autenticado
Ordem minima de implementacao
- definir contrato do token
- gerar chaves
- implementar
login,refresh - emitir JWT corretamente
- implementar middleware JWT em 1 servico consumidor
- proteger 1 rota simples
- replicar middleware nos demais servicos
- implementar propagacao de
Authorizationentre servicos
Criterios de sucesso do MVP
- login retorna
access_token - acesso direto a rota protegida funciona
- token invalido retorna
401 - token expirado retorna
401 - chamada A -> B preserva o mesmo
sub
Fora de escopo agora
- blacklist de tokens
- revogacao imediata global
- introspection por request
- machine-to-machine token
- gateway avancado
Resumo executivo
O minimo para funcionar:
- Auth emitir JWT assinado
- servicos validarem localmente
subcomo identificador confiavel- propagacao do mesmo bearer token entre servicos