Výběr správného flow
Rozhodovací strom
┌─────────────────────────────┐
│ Jaký typ aplikace máte? │
└─────────────────────────────┘
│
┌─────────────────────┼─────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Serverová web │ │ SPA / Mobilní │ │ Backend služba │
│ aplikace │ │ aplikace │ │ (bez uživatele) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Authorization │ │ Authorization │ │ Client │
│ Code Flow │ │ Code + PKCE │ │ Credentials │
└─────────────────┘ └─────────────────┘ └─────────────────┘
Porovnání flow
| Vlastnost | Auth Code | Auth Code + PKCE | Client Credentials |
|---|---|---|---|
| Autentizace uživatele | Ano | Ano | Ne |
| Refresh tokeny | Ano | Ano | Ne |
| Vyžaduje client secret | Ano | Ne | Ano |
| Vhodné pro frontend | Ne | Ano | Ne |
| Souhlas uživatele | Ano | Ano | Ne |
| Vrací ID token | Ano | Ano | Ne |
Doporučení podle typu aplikace
| Typ aplikace | Doporučené flow | Poznámky |
|---|---|---|
| Tradiční webová aplikace (PHP, Rails, Django, ASP.NET) | Authorization Code | Ukládejte tokeny na serveru |
| Single Page Application (React, Vue, Angular) | Authorization Code + PKCE | Backend není vyžadován |
| Mobilní aplikace (iOS, Android) | Authorization Code + PKCE | Použijte custom URL scheme |
| Nativní desktopová aplikace | Authorization Code + PKCE | Použijte localhost redirect |
| Backend služba / Cron Job | Client Credentials | Bez kontextu uživatele |
| Komunikace mezi mikroslužbami | Client Credentials | Přístup servisního účtu |
Rychlé shrnutí
- Máte backend, který může uchovávat secrets? → Authorization Code Flow
- SPA nebo mobilní aplikace? → Authorization Code + PKCE
- Bez uživatele (M2M)? → Client Credentials