Řešení problémů
Běžné problémy a řešení
Chyba "invalid_redirect_uri"
Problém: Autorizační požadavek selže s chybou redirect URI.
Příčiny:
- Redirect URI není registrované pro aplikaci
- Nesoulad URI (http vs https, koncové lomítko, rozdíly v cestě)
- Problémy s URL kódováním
Řešení:
# Ověřte přesnou shodu s registrovaným URI
Registrované: https://myapp.com/callback
Požadavek: https://myapp.com/callback ✓
Požadavek: https://myapp.com/callback/ ✗ (koncové lomítko)
Požadavek: http://myapp.com/callback ✗ (http vs https)
Chyba "invalid_client"
Problém: Výměna tokenů selže s chybou klienta.
Příčiny:
- Špatný client_id
- Špatný client_secret
- Secret není zahrnut (pro confidential klienty)
Řešení:
- Ověřte že client_id a client_secret jsou správné
- Ujistěte se že confidential klienti zahrnují client_secret v token požadavcích
- Zkontrolujte mezery v přihlašovacích údajích
"invalid_grant" - Kód vypršel
Problém: Výměna authorization code selže.
Příčiny:
- Kód starší než 5 minut
- Kód již použit (jednorázový)
- Špatné redirect_uri v token požadavku
Řešení:
- Ujistěte se že výměna kódu proběhne okamžitě po callbacku
- Nikdy nepoužívejte authorization codes opakovaně
- Použijte přesně stejné redirect_uri v authorize i token požadavcích
"consent_required" s prompt=none
Problém: Tichá autentizace selže.
Příčina: Uživatel dříve neudělil souhlas, ale prompt=none zabraňuje zobrazení obrazovky souhlasu.
Řešení:
// Zpracování chyby consent_required
if (error === 'consent_required') {
// Přesměrovat bez prompt=none pro zobrazení obrazovky souhlasu
window.location.href = authUrl.replace('prompt=none', '');
}
Selhání obnovení tokenu
Problém: Požadavek na refresh token vrací chybu.
Příčiny:
- Refresh token vypršel (14 dní)
- Relace byla zrušena (změna hesla, atd.)
- Refresh token již použit (rotace)
Řešení:
- Přesměrujte uživatele k opětovné autentizaci
- Vždy ukládejte nejnovější refresh token po každém obnovení
2FA kód nefunguje
Problém: Ověřovací kód z autentikační aplikace není přijat.
Příčiny (autentikační aplikace):
- Nesprávný čas na zařízení (TOTP závisí na synchronizaci času)
- Kód z jiného účtu
- Tajný klíč nebyl správně naskenován
Řešení:
- Zkontrolujte že čas na telefonu je automaticky synchronizován
- Ujistěte se že používáte správný účet v autentikační aplikaci
- V případě problémů: deaktivujte a znovu aktivujte 2FA s novým QR kódem
- Použijte záložní kódy jako alternativu
E-mailový 2FA kód nebyl doručen
Problém: Uživatel neobdržel ověřovací kód na e-mail.
Příčiny:
- Špatná e-mailová adresa
- E-mail ve složce spam
- Překročen rate limit
Řešení:
- Ověřte že e-mailová adresa je správná
- Zkontrolujte složku spam/nevyžádaná pošta
- Počkejte a zkuste znovu (rate limits)
- Použijte záložní kódy jako alternativu
Magic Link nefunguje
Problém: Kliknutí na magic link zobrazí chybu.
Příčiny:
- Odkaz vypršel (15 minut)
- Odkaz již použit
- Odkaz zkopírován nesprávně (zkrácen)
Řešení:
- Požádejte o nový magic link
- Klikněte na odkaz do 15 minut
- Zkopírujte kompletní odkaz včetně všech parametrů
Tipy pro ladění
1. Zkontrolujte Discovery endpoint
Ověřte že SSO server je dostupný:
curl https://your-sso-domain.com/.well-known/openid-configuration
2. Dekódujte JWT tokeny
Prohlédněte si obsah tokenu (NESDÍLEJTE tokeny veřejně):
# Extrahujte payload (střední část mezi tečkami)
echo "eyJhbG...payload...signature" | cut -d. -f2 | base64 -d
3. Zkontrolujte expiraci tokenu
const payload = JSON.parse(atob(token.split('.')[1]));
console.log('Vyprší:', new Date(payload.exp * 1000));
console.log('Vydán:', new Date(payload.iat * 1000));
4. Testujte pomocí cURL
Testujte požadavky nezávisle na vaší aplikaci:
curl -v -X POST https://your-sso-domain.com/connect/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_SECRET"
Získání pomoci
Pokud stále máte problémy:
- Zkontrolujte tuto dokumentaci pro relevantní sekce
- Pečlivě přečtěte chybové zprávy - často indikují příčinu
- Testujte pomocí cURL pro izolaci problému
- Zkontrolujte Swagger na
/documentationpro detaily API - Kontaktujte podporu na support@klubero.cz s:
- Chybovou zprávou (přesný text)
- Detaily požadavku (endpoint, parametry - nikdy neposílejte secrets)
- Kroky k reprodukci
- Client ID (ne secret)