MCP EasyWeb: srovnani adresy a srozumitelna hlaska u HTTP 400

Overeno proti bezicimu serveru (samolepak klon z jejich settings.json):
/login vraci 400 Bad Request na kazde udaje - spravne heslo, spatne heslo,
prazdne heslo i neznamy ucet dostanou tutez odpoved, telo je vzdycky jen
"Bad Request" v HTML. Bez hlavicky Authorization vraci 401, takze handler
udaje cte a odmita je az uvnitr.

Tvar pozadavku tedy sedi: totez posila jejich vlastni WPF klient a stejny 400
vraci i holy curl. Zmeny jsou proto v tom, aby z toho clovek poznal, co se
deje:

- 400 i 401 z /login hlasi jako odmitnute prihlaseni a rovnou rikaji, ze
  tenhle server odpovida stejnym kodem i na neznamy ucet. Driv to bylo holé
  "vratilo HTTP 400", coz posilalo hledat chybu v adrese
- adresa se u EasyWebu srovnava jako v jejich klientovi: vlepena prihlasovaci
  cesta se odrizne a chybejici /mcp se doplni. Server je na cestu prisny,
  i /mcp/login/ s lomitkem vraci 404
- u obecne sluzby se adresa nemeni. Cizi server muze mit endpoint kdekoliv
  a "opravit" mu ji podle naseho odhadu znamena rozbit napojeni, ktere by
  jinak fungovalo

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
JiriUhlir
2026-08-28 10:21:48 +02:00
co-authored by Claude Opus 5
parent 81e4348ad8
commit d881dab30d
4 changed files with 89 additions and 6 deletions
+22
View File
@@ -103,6 +103,28 @@ Otisk zarizeni se doplnuje z ID konektoru (`worknuke-con_abc123`), aby server
poznal, ze jde porad o totez zarizeni, a aby si dve napojeni tehoz portalu
nesahala do sezeni.
### Adresa se u EasyWebu srovnava
Vlepena prihlasovaci cesta se odrizne a chybejici `/mcp` se doplni, takze
`.../centaur/mcp/login` i `.../CentaurWebApp` skonci tam, kde ma. Server je na
cestu prisny - i `/mcp/login/` s lomitkem na konci vraci 404.
**U obecne sluzby se adresa nemeni.** Cizi server muze mit endpoint kdekoliv
a "opravit" mu adresu podle naseho odhadu znamena rozbit napojeni, ktere by
jinak fungovalo.
### Kdyz server odpovi 400
`400 Bad Request` z `/login` **neni chyba pozadavku u nas**. Server ho ma jako
"malformed authorization request" a odpovida jim i na udaje, ktere neuzna.
Overeno proti bezicimu serveru: spatne heslo, prazdne heslo i neznamy ucet
vraceji tutez odpoved jako udaje spravne, telo je vzdycky jen `Bad Request`
v HTML. Rozlisit se to zvenku neda, takze to hlaska rika narovinu misto toho,
aby posilala cloveka hledat chybu v adrese.
Rozdil oproti chybejicimu prihlaseni je videt: `/login` **bez** hlavicky
`Authorization` vraci 401, s ni uz 400.
## Prihlaseni a zivotnost tokenu
Cely zivotni cyklus resi `src/mcp/auth.ts`. **Token je kratkodoby, jeho