flowchart LR
subgraph cidadao["👤 Cidadão"]
A["📱 Carteira Digital<br>(INJI Wallet)"]
end
subgraph verificador["🔍 Verificador — você"]
B["🌐 App React<br>+ INJI Verify SDK"]
C["⚙️ INJI Verify Service<br>Spring Boot · PostgreSQL<br>Docker · VM"]
end
subgraph governo["🏛️ Governo"]
E["🏢 Emissor de<br>Credenciais"]
end
B <-->|"REST API<br>(verifyServiceUrl)"| C
C <-->|"OpenID4VP<br>(VP submission)"| A
B -.->|"QR Code / Deep Link<br>(authorizationUrl)"| A
E <-.->|"OpenID4VCI"| A
classDef estiloCidadao fill:#ffffff,stroke:#2563eb,color:#1e3a8a
classDef estiloVerificador fill:#ffffff,stroke:#059669,color:#064e3b
classDef estiloGoverno fill:#ffffff,stroke:#d97706,color:#78350f
class A estiloCidadao
class B,C estiloVerificador
class E estiloGoverno
style cidadao fill:#ffffff,stroke:#2563eb,color:#1e3a8a
style verificador fill:#ffffff,stroke:#059669,color:#064e3b
style governo fill:#ffffff,stroke:#d97706,color:#78350f
Arquitetura em 1 Página
Objetivo
Entender os componentes do sistema e como eles se conectam.
Diagrama de Arquitetura
Componentes
| Componente | Responsável | Tecnologia | Descrição |
|---|---|---|---|
| Carteira Digital | Cidadão | INJI Wallet (app mobile) | Armazena a credencial de idade emitida pelo governo |
| App React + SDK | Verificador (você) | React 18 + @mosip/react-inji-verify-sdk |
Componentes React que gerenciam o fluxo de verificação |
| INJI Verify Service | Verificador (você) | Java 21, Spring Boot 3.2, PostgreSQL 13 | Backend que valida criptograficamente a credencial via OpenID4VP |
| Emissor | Governo | — | Emitiu a credencial. Não participa do fluxo em tempo real |
Como os componentes se comunicam
- O SDK React chama o INJI Verify Service via REST API para criar uma solicitação de verificação (VP Request)
- O SDK exibe um QR Code (desktop) ou abre um Deep Link (mobile) contendo a URL de autorização
- O cidadão abre a Carteira Digital, que se comunica diretamente com o INJI Verify Service para apresentar a credencial
- O SDK faz long-polling no Service até receber o resultado
- O resultado chega ao SDK via callback (
onVpReceivedouonVpProcessed)
Regras Fundamentais
- Não é necessário um backend customizado — o INJI Verify SDK e o INJI Verify Service fazem toda a orquestração.
- O INJI Verify Service roda dentro da sua infraestrutura (sua VM, via Docker).
- A Carteira Digital do cidadão precisa acessar o INJI Verify Service pela internet — o Service precisa de um domínio público.
- O governo não participa da verificação em tempo real — a credencial já está com o cidadão.
- A identidade do verificador é baseada em DID Web (
did:web:seu-dominio.com.br:v1:verify).
Importante
O INJI Verify Service precisa ser acessível publicamente pela Carteira Digital do cidadão. Em desenvolvimento local, use um túnel (ex: ngrok).