OAuth2 aplikace

Propojte aplikaci třetí strany s Futrou pomocí OAuth2.

Futrou podporuje dynamickou registraci OAuth2 aplikací pro automatizaci — aplikace třetí strany si tak může vyžádat přístup k Futrou, aniž by ji předtím musel někdo ručně zaregistrovat. Aplikace vznikají za běhu, dopředu je přes dashboard registrovat nejde.

Aplikaci, která není připojená k žádnému workspacu, Futrou krátce po registraci automaticky smaže — před dalším použitím se musí zaregistrovat znovu.

Automatické zjišťování

Aplikace najde autorizační a token endpointy Futrou pomocí OAuth 2.0 Authorization Server Metadata (RFC 8414):

bash
curl https://api.futrou.com/.well-known/oauth-authorization-server
json
{
  "issuer": "https://api.futrou.com",
  "authorization_endpoint": "https://api.futrou.com/v2/auth/oauth2/authorize",
  "token_endpoint": "https://api.futrou.com/v2/auth/oauth2/token",
  "revocation_endpoint": "https://api.futrou.com/v2/auth/oauth2/revoke",
  "registration_endpoint": "https://api.futrou.com/v2/auth/oauth2/register",
  "response_types_supported": ["code"],
  "grant_types_supported": ["authorization_code"],
  "code_challenge_methods_supported": ["S256"]
}

Registrace

Aplikace se registruje sama při prvním připojení, pomocí OAuth 2.0 Dynamic Client Registration (RFC 7591) na registration_endpoint zjištěném výše — v dashboardu nic ručně nenastavujete:

bash
curl -X POST https://api.futrou.com/v2/auth/oauth2/register \
  -H "Content-Type: application/json" \
  -d '{
    "client_name": "My Integration",
    "logo_uri": "https://myapp.example.com/icon.png",
    "redirect_uris": ["https://myapp.example.com/callback"],
    "token_endpoint_auth_method": "none"
  }'

Futrou vrátí client_id, který aplikace použije v následujícím autorizačním kroku:

json
{
  "client_id": "app_8f2c1a9b",
  "client_name": "My Integration",
  "logo_uri": "https://myapp.example.com/icon.png",
  "redirect_uris": ["https://myapp.example.com/callback"],
  "client_id_issued_at": 1755190800
}

logo_uri je nepovinné, ale doporučené — Futrou ho zobrazí jako ikonu aplikace na autorizační obrazovce, takže lidé schvalující aplikaci ji na první pohled poznají.

Samotná registrace ještě neznamená žádný přístup, vzniká jí jen identita klienta — s pouhým client_id aplikace nic nezmůže, dokud ji člověk neschválí pro konkrétní workspace a nedokončí tím autorizační krok.

Autorizace

Po registraci projde aplikace standardním OAuth2 autorizačním flow s PKCE proti https://api.futrou.com/v2/auth/oauth2/authorize a https://api.futrou.com/v2/auth/oauth2/token. Schválíte ji pro konkrétní workspace a tím se vydá API token workspacu s rolí, která nepřevyšuje vaši vlastní roli v daném workspacu.

Bezpečnost

Registrace je otevřená a neautentizovaná, takže údaje, které aplikace uvádí — client_name, logo_uri, redirect_uris — jsou čistě sebeuváděné a Futrou je nijak neověřuje. Berte registraci jako pouhé tvrzení o identitě, ne jako rozhodnutí o důvěře: skutečná bezpečnostní hranice je až autorizační obrazovka, kde člověk rozhoduje, jestli danému klientovi dá přístup ke svému workspacu.

  • PKCE je povinné. Každý autorizační požadavek musí nést code_challenge — tím se uzavírá riziko odposlechu, které by jinak hrozilo díky tomu, že se nevyžaduje client secret.
  • redirect_uris se při autorizaci porovnávají přesně s tím, co bylo zaregistrováno — aplikace nemůže přesměrovat autorizační kód jinam, než sama předem deklarovala.
  • Registrace je rate-limitovaná podle IP, aby se zabránilo zneužití samotného registračního endpointu.
  • Důvěryhodně vypadající název nebo logo nejsou důkaz identity. Obě pole jsou sebeuváděná, takže je může zkopírovat kdokoliv. Než aplikaci schválíte, vždy si na autorizační obrazovce zkontrolujte doménu v jejích redirect_uris a ověřte, že jí důvěřujete — stejně jako byste si před kliknutím zkontrolovali odkaz. Hezký název nebo ikona doménu neověří za vás.

Naposledy upraveno