core/identity-gateway/README.md
2025-12-27 14:20:43 -03:00

60 lines
1.7 KiB
Markdown

# identity-gateway
`identity-gateway` é a autoridade de identidade **interna** da plataforma. Ele existe para unificar
identidade, RBAC e emissão de tokens confiáveis para serviços internos. **Não é** um produto de auth
para o mercado, não compete com Auth0/Clerk e não oferece SDKs públicos ou UI de login white-label.
## Por que NÃO é Auth0
- Não é vendido como produto standalone de autenticação.
- Não é SDK-first e não prioriza experiência de dev externo.
- Tokens são internos e consumidos apenas por serviços confiáveis.
- UI de login não é foco (nem fornecida aqui).
## Papel do identity-gateway
- Centralizar autenticação e autorização.
- Emitir JWTs para serviços internos.
- Manter RBAC e permissões por tenant.
- Ser a autoridade de identidade para:
- `baas-control-plane`
- `billing-finance-core`
- `crm-core`
## Fluxo de confiança
1. Usuário autentica no `identity-gateway`.
2. O gateway valida a identidade (provider local/externo).
3. O gateway emite JWT interno com claims mínimas.
4. Serviços internos validam e confiam no token.
> Nenhum serviço externo emite tokens para o gateway.
## Modelo de tokens
Veja [`docs/token-model.md`](docs/token-model.md).
## Rodando localmente
```bash
cp .env.example .env
npm install
npm run dev
```
## Docker
```bash
docker-compose up --build
```
## Estrutura
- `src/core`: guards e serviços centrais.
- `src/modules`: auth, users, roles, permissions, sessions, providers.
- `docs`: arquitetura, segurança e modelo de tokens.
## Notas de segurança
- JWTs são internos e não devem ser expostos diretamente a apps públicos.
- Refresh tokens são armazenados com hash no banco.