Esperado
Usuário autentica via OAuth Microsoft com conta pessoal e acessa /workspace normalmente,
com /api/workspaces/me resolvendo o workspace vinculado à identidade autenticada.
Observado
Após login OK com conta pessoal Microsoft (não enterprise/corporativa), a aplicação entra em
loop de login em produção (https://layoutparser.duckdns.org/workspace). A chamada
/api/workspaces/me retorna 401 com corpo {"error":"Identidade não resolvida."}.
Reprodução
- Login com conta pessoal Microsoft (tenant "consumers", GUID padrão
9188040d-6c67-4c5b-b112-36a304b66dad).
- Cookie de sessão do BFF é emitido corretamente — confirmado que
/api/session retorna
{"authenticated":true,...,"isAdmin":true} para essa conta.
- Front chama
/api/workspaces/me → API .NET responde 401 "Identidade não resolvida." →
aplicação redireciona de volta para login → loop.
Ambiente
Produção, https://layoutparser.duckdns.org, testado ao vivo via SSH (curl.exe direto no
processo Node e via IIS).
Impacto
Bloqueia totalmente o acesso ao workspace para qualquer usuário que só possua conta pessoal
Microsoft (sem conta enterprise/corporativa). Usuários enterprise não são afetados.
Causa raiz (investigação já concluída)
Front (LayoutParserReact) e BFF (server/) estão corretos:
- O BFF emite e valida o cookie de sessão corretamente para a conta pessoal.
- O BFF encaminha a identidade para a API via headers confiáveis
(x-iis-user, x-layoutparser-identity-provider, x-layoutparser-identity-subject,
x-layoutparser-identity-tenant).
- A mensagem de erro
"Identidade não resolvida." não existe neste repositório
(confirmado: string ausente em server/src) — ela é emitida pela API .NET
(LayoutParserApi).
- Conclusão: a API .NET não resolve/provisiona identidades do tenant "consumers" (contas
pessoais Microsoft) em /api/workspaces/me.
Correção esperada
100% no repositório LayoutParserApi — este bug é uma dependência cross-repo explícita
e não é resolvido por nenhum agente deste repositório (LayoutParserReact). A API precisa
provisionar/resolver identidade também para o tenant "consumers", ou documentar
explicitamente que contas pessoais não são suportadas (decisão de produto pendente).
Evidência técnica (sem dado sensível)
- Endpoint afetado:
GET /api/workspaces/me
- Resposta:
401 {"error":"Identidade não resolvida."}
- Headers confiáveis enviados pelo BFF:
x-iis-user, x-layoutparser-identity-provider,
x-layoutparser-identity-subject, x-layoutparser-identity-tenant
- Tenant GUID observado:
9188040d-6c67-4c5b-b112-36a304b66dad (tenant "consumers" padrão
Microsoft para contas pessoais)
/api/session local confirma sessão válida (authenticated: true, isAdmin: true)
Esperado
Usuário autentica via OAuth Microsoft com conta pessoal e acessa
/workspacenormalmente,com
/api/workspaces/meresolvendo o workspace vinculado à identidade autenticada.Observado
Após login OK com conta pessoal Microsoft (não enterprise/corporativa), a aplicação entra em
loop de login em produção (
https://layoutparser.duckdns.org/workspace). A chamada/api/workspaces/meretorna401com corpo{"error":"Identidade não resolvida."}.Reprodução
9188040d-6c67-4c5b-b112-36a304b66dad)./api/sessionretorna{"authenticated":true,...,"isAdmin":true}para essa conta./api/workspaces/me→ API .NET responde 401 "Identidade não resolvida." →aplicação redireciona de volta para login → loop.
Ambiente
Produção,
https://layoutparser.duckdns.org, testado ao vivo via SSH (curl.exe direto noprocesso Node e via IIS).
Impacto
Bloqueia totalmente o acesso ao workspace para qualquer usuário que só possua conta pessoal
Microsoft (sem conta enterprise/corporativa). Usuários enterprise não são afetados.
Causa raiz (investigação já concluída)
Front (
LayoutParserReact) e BFF (server/) estão corretos:(
x-iis-user,x-layoutparser-identity-provider,x-layoutparser-identity-subject,x-layoutparser-identity-tenant)."Identidade não resolvida."não existe neste repositório(confirmado: string ausente em
server/src) — ela é emitida pela API .NET(LayoutParserApi).
pessoais Microsoft) em
/api/workspaces/me.Correção esperada
100% no repositório LayoutParserApi — este bug é uma dependência cross-repo explícita
e não é resolvido por nenhum agente deste repositório (
LayoutParserReact). A API precisaprovisionar/resolver identidade também para o tenant "consumers", ou documentar
explicitamente que contas pessoais não são suportadas (decisão de produto pendente).
Evidência técnica (sem dado sensível)
GET /api/workspaces/me401 {"error":"Identidade não resolvida."}x-iis-user,x-layoutparser-identity-provider,x-layoutparser-identity-subject,x-layoutparser-identity-tenant9188040d-6c67-4c5b-b112-36a304b66dad(tenant "consumers" padrãoMicrosoft para contas pessoais)
/api/sessionlocal confirma sessão válida (authenticated: true,isAdmin: true)