Aparência
Autorização e consentimento
As duas sequências abaixo mostram a plataforma nos dois lados do ecossistema: como transmissora, recebendo pedidos de outros participantes, e como receptora, coletando dados de outras instituições com o consentimento do cliente. Em ambas, toda chamada entre participantes usa mTLS com certificados ICP-Brasil e o perfil de segurança FAPI-BR.
Como transmissora
- Registro do cliente. A receptora se registra por DCR, apresentando o SSA emitido pelo Diretório. A plataforma valida o SSA e o certificado e registra o cliente no Keycloak, vinculado ao certificado apresentado.
- Consentimento. A receptora cria o consentimento, que nasce aguardando autorização.
- PAR. A receptora envia os parâmetros da autorização assinados em PS256. A camada FAPI confere a assinatura e se o certificado é o mesmo do registro antes de encaminhar ao Keycloak.
- Autorização do cliente. O cliente é redirecionado, se autentica e aprova o consentimento no servidor de autorização da instituição.
- Token. A receptora troca o código por um token com PKCE e mTLS. O token fica vinculado ao certificado dela, e o ID token vai criptografado.
- Acesso aos dados. A cada chamada, a plataforma valida o token, confere o certificado com o vínculo do token e verifica o consentimento. O consentimento passa a autorizado na primeira chamada feita com um token obtido pelo cliente.
Como receptora
- O cliente escolhe a instituição de origem dos dados.
- A plataforma consulta no Diretório de Participantes o servidor de autorização da instituição e obtém o SSA do seu próprio software.
- A plataforma se registra por DCR na instituição de origem, cria o consentimento e envia o PAR.
- O cliente é redirecionado, se autentica na instituição de origem e aprova o compartilhamento.
- A plataforma recebe o código no callback, verifica a resposta conforme o perfil FAPI e troca o código por um token com PKCE e mTLS.
- O token é guardado criptografado (AES-256-GCM), e os dados autorizados são buscados e sincronizados no PostgreSQL da instituição.