Ř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í
Pokud má uživatel povolené 2FA, probíhá celé ověření na přihlašovací stránce Klubero SSO – vaše aplikace 2FA neimplementuje ani neřeší. Z pohledu integrace je výsledkem buď úspěšné přihlášení (obdržíte autorizační kód), nebo standardní OAuth chyba. Případné potíže s kódem (např. nesynchronizovaný čas v autentikátoru) řeší uživatel přímo na obrazovce SSO, kde může použít i záložní kód.
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
- Ověřte konfiguraci přes Discovery endpoint
/.well-known/openid-configuration - 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)