šŸ”‘ Autenticação de usuĆ”rios por sistema externo

Permite que a plataforma do cliente, que jÔ autenticou o usuÔrio do seu lado, abra uma sessão
para ele na Ensinio sem pedir login e senha.

O endpoint exige:

  • Authorization: Bearer {token}
  • Content-Type: application/json

Recurso do plano necessƔrio:

  • Public API – Generate Session Code

Como funciona

sequenceDiagram
    actor U as UsuƔrio
    participant E as Sistema externo
    participant B as Ensinio (API)
    participant F as Ensinio (front)

    U->>E: login na plataforma do cliente
    E->>B: POST /public/api/v1/auth/session-code<br/>Bearer {token da integração} + { email }
    B->>B: valida integração, usuÔrio e elegibilidade
    B-->>E: { code, expires_in, redirect_url }
    E-->>U: redirect para redirect_url
    U->>F: GET /auth-token/token?token={code}
    F->>B: POST /api/v1/auth-factory-token { token }
    B->>B: consome o código (uso único)
    B-->>F: sessão + token do usuÔrio
    F-->>U: dentro da plataforma, autenticado

O sistema externo só precisa implementar os dois primeiros passos: chamar o endpoint e
redirecionar para o redirect_url que vier na resposta. O resto acontece dentro da Ensinio.


šŸŽŸļø Emitir código

POST /auth/session-code

Body

{
  "email": "[email protected]"
}

200

{
  "code": "hRk2pQ9vTz8mXn4LbW1cJyF6sD0gA3eUoI7tZqPr",
  "expires_in": 120,
  "expires_at": "2026-09-22T14:32:10-03:00",
  "redirect_url": "https://sua-plataforma.ensinio.com/auth-token/token?token=hRk2pQ9vTz8mXn4LbW1cJyF6sD0gA3eUoI7tZqPr"
}

Redirecione o browser do usuÔrio para redirect_url exatamente como veio. Não é preciso montar
a URL: o domínio do front não é o mesmo da API, e devolvê-la pronta evita o erro mais comum da
integração.

Exemplo

curl -X POST https://sua-plataforma.ensinio.cloud/public/api/v1/auth/session-code \
  -H "Authorization: Bearer {SEU_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]"}'

šŸ”’ Garantias do código

RegraComo Ć© cumprida
Imprevisível40 caracteres aleatórios criptogrÔficos
Não carrega dado sensívelé opaco; nada do usuÔrio pode ser lido a partir dele
Validade curta120 segundos
Uso únicoinvalidado no próprio resgate, por escrita condicional no banco
Não recuperÔvel a partir do bancoa Ensinio guarda apenas o hash SHA-256

O code aparece uma Ćŗnica vez, nesta resposta. NĆ£o hĆ” endpoint para consultĆ”-lo depois.
Perdeu, emita outro — cada chamada gera um código novo e nĆ£o reaproveita o anterior.


🚫 Quem não pode ser autenticado

  • O usuĆ”rio System do tenant, em nenhuma circunstĆ¢ncia.
  • UsuĆ”rios que nĆ£o tĆŖm acesso Ć  plataforma.
  • Qualquer usuĆ”rio, enquanto o tenant estiver bloqueado.

Não bloqueiam a emissão: e-mail não verificado e conta desativada. Verificar e-mail não é
obrigatório na plataforma, e quem chama a rota jÔ autenticou o usuÔrio do lado dele.


Respostas de erro

CódigoQuando
401token da integração ausente ou invÔlido
403recurso Public API – Generate Session Code nĆ£o habilitado no plano
404usuÔrio não encontrado ou não elegível
422email ausente ou malformado
429limite de requisiƧƵes do plano excedido

O 404 Ʃ deliberadamente o mesmo para e-mail inexistente e usuƔrio System.
DiferenciĆ”-los transformaria o endpoint em ferramenta para descobrir quais e-mails existem na
base do tenant — e quais deles sĆ£o privilegiados. Para provisionar um usuĆ”rio que ainda nĆ£o
existe, use POST /users antes.