Přeskočit na hlavní obsah

Ř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:

  1. Redirect URI není registrované pro aplikaci
  2. Nesoulad URI (http vs https, koncové lomítko, rozdíly v cestě)
  3. 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:

  1. Špatný client_id
  2. Špatný client_secret
  3. 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:

  1. Kód starší než 5 minut
  2. Kód již použit (jednorázový)
  3. Š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

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:

  1. Refresh token vypršel (14 dní)
  2. Relace byla zrušena (změna hesla, atd.)
  3. 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):

  1. Nesprávný čas na zařízení (TOTP závisí na synchronizaci času)
  2. Kód z jiného účtu
  3. 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:

  1. Špatná e-mailová adresa
  2. E-mail ve složce spam
  3. 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

Problém: Kliknutí na magic link zobrazí chybu.

Příčiny:

  1. Odkaz vypršel (15 minut)
  2. Odkaz již použit
  3. 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:

  1. Zkontrolujte tuto dokumentaci pro relevantní sekce
  2. Pečlivě přečtěte chybové zprávy - často indikují příčinu
  3. Testujte pomocí cURL pro izolaci problému
  4. Zkontrolujte Swagger na /documentation pro detaily API
  5. 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)