App da Cidade demonstraçãoInícioGuia de integraçãoConexão

Guia de integração: entrada sem senha no Placarsoft

Para sistemas parceiros (por exemplo, o app de um município) que já autenticam o cidadão e querem levá-lo ao Placarsoft sem pedir login e senha de novo.

Há dois caminhos, que podem ser usados juntos:

Esta aplicação é uma demonstração dos dois: ela faz o papel do sistema parceiro.

O que você recebe do Placarsoft

O administrador do sistema do cliente cadastra o seu sistema como parceiro e entrega a você:

No cadastro também ficam definidos o identificador principal da pessoa (CPF, um identificador personalizado — como um cartão cidadão — ou o e-mail), a claim que o traz, os destinos permitidos e, se combinado, a lista de IPs de onde os pedidos podem vir.

1. Link de acesso

Quando a pessoa pede para ir ao Placarsoft, o seu servidor pede o link. Nunca faça esse pedido pelo navegador ou pelo app da pessoa: o client_secret não pode sair do servidor.

POST {backend}/api/v1/auth/partner/link, autenticado por HTTP Basic com o client_id e o client_secret (Authorization: Basic base64(client_id:client_secret)).

O corpo é JSON, com os nomes das claims do OpenID Connect:

CampoQuando enviarDescrição
subsempreIdentificação estável da pessoa no seu sistema (até 255 caracteres). Depois do primeiro acesso, é por ela que a conta é achada.
cpfconforme o cadastroCPF, com ou sem máscara.
custom_idconforme o cadastroIdentificador personalizado, até 50 caracteres.
emailconforme o cadastroE-mail.
email_verifiedse a pessoa for identificada pelo e-mailPrecisa ser true.
nameno primeiro acessoNome completo.
phone_numberopcionalCelular, de preferência no formato internacional (+5511912345678).
birthdateopcionalData de nascimento, AAAA-MM-DD.
genderopcionalfemale ou male.
destinationopcionalOnde a pessoa entra. Sem ele, admin.

Destinos:

Cada destino precisa estar entre os permitidos ao seu sistema.

Exemplo de pedido:

{
  "sub": "8f14e45f",
  "name": "Maria da Silva",
  "cpf": "000.000.000-00",
  "email": "maria@example.com",
  "email_verified": true,
  "destination": "admin"
}

Resposta de sucesso (200):

{
  "status": 1,
  "link": "https://…",
  "expires_in": 300
}

Leve a pessoa ao link. Ele é de uso único e vale 5 minutos: peça um novo a cada ida, no momento do clique.

Recusas

A recusa volta com status: 0, um código em error e o motivo em message. Nenhuma conta é criada ou alterada numa recusa.

HTTPerrorQuando
401invalid_clientclient_id ou client_secret errados, ou parceiro desativado.
403ip_not_allowedO IP de origem não está na lista cadastrada para o parceiro.
403invalid_destinationDestino desconhecido ou não permitido ao parceiro.
422invalid_requestFalta o sub ou o identificador principal, um documento é inválido, ou falta o name de quem ainda não tem conta.
422email_not_verifiedIdentificação por e-mail sem email_verified igual a true.
422document_mismatchO CPF ou o identificador personalizado pertence a outra conta, ou a conta encontrada já tem outro valor.
422privileged_accountA conta encontrada tem acesso de administrador: essa pessoa entra só por senha.
422inactive_accountA conta encontrada está inativa.
404unavailableO recurso não está ligado nesta instalação.
429—Muitos pedidos em pouco tempo a partir do mesmo IP. Tente de novo em instantes.

O que acontece com a conta

2. Botão "Entrar com o parceiro" (OpenID Connect)

Opcional, para quem tem um provedor OpenID Connect (como Keycloak ou um provedor próprio). Entregue ao administrador do cliente:

Cadastre no seu provedor o endereço de retorno que a tela do parceiro mostra no Placarsoft, em geral {backend}/api/v1/auth/partner/callback.

O que o seu provedor precisa suportar:

As regras de conta são as mesmas do link. Quando a entrada é recusada, a pessoa volta à tela de entrada do Placarsoft com o motivo.

Identificar pela claim sub

Alguns provedores entregam o CPF no próprio sub, como o gov.br. Nesse caso, combine com o administrador do cliente que o identificador principal é o CPF lido da claim sub. Nesta demonstração, a tela de Conexão alterna entre "sub = id interno" e "sub = CPF" para mostrar os dois jeitos.

Escolha um jeito e mantenha: o vínculo entre a pessoa e a conta no Placarsoft é feito pelo sub, e trocar o formato depois faz a próxima entrada procurar a conta de novo pelo identificador principal.

Boas práticas