So sieht die Meldung aus
{"error":"invalid_client","error_description":"Client authentication failed"}
HTTP/1.1 401 UnauthorizedHäufige Ursachen
- Das Client-Secret ist falsch, wurde erneuert, ist abgelaufen oder wurde mit Leerzeichen oder Zeilenumbruch kopiert.
- Der Client nutzt eine andere Authentifizierungsmethode, als der IdP erwartet, z. B.
client_secret_poststattclient_secret_basic. - Die Client-ID ist falsch getippt, gehört zu einem anderen Realm oder Tenant, oder der Client wurde gelöscht oder deaktiviert.
- Der Client ist als öffentlicher Client ohne Secret eingestellt, die App sendet aber eines, oder er ist vertraulich und sendet keines.
- Ein Proxy oder ein Formular-Ausfüller verändert den
Authorization-Header.
Prüfen
- Welche Auth-Methoden akzeptiert der IdP?
curl -s https://idp.example.com/.well-known/openid-configuration | jq '.token_endpoint, .token_endpoint_auth_methods_supported' - Welche Client-ID ist in Nextcloud eingetragen?
- Den Fehler im App-Log finden
grep -i invalid_client /var/www/nextcloud/data/nextcloud.log | tail -n 5 - Versteckte Zeichen im gespeicherten Secret?
printf '%s' "$CLIENT_SECRET" | od -c | tail -n 3
Lösung
- Den Client im IdP öffnen, das Secret neu erzeugen oder kopieren und ohne Leerzeichen und Zeilenumbrüche in die App einfügen.
- Das Ablaufdatum des Secrets prüfen. Manche Anbieter, z. B. Microsoft Entra ID, lassen Secrets ablaufen, also ein neues erzeugen und die App aktualisieren, bevor das alte ausfällt.
- Die Authentifizierungsmethode angleichen: Client im IdP und App auf dieselbe einstellen,
client_secret_basicoderclient_secret_post. - Prüfen, dass der Client aktiviert ist, den Typ vertraulich hat, wenn er ein Secret nutzt, und zum Realm oder Tenant der verwendeten Issuer-URL gehört.
- Den Login erneut versuchen und im eigenen Log des IdP den genauen Grund lesen.
Häufige Fragen
Was ist der Unterschied zu invalid_grant?
invalid_client heißt, die App konnte ihre Identität nicht belegen. invalid_grant heißt, der Code oder das Token war schlecht: doppelt benutzt, abgelaufen oder für eine andere Redirect-Adresse ausgestellt.
Liegt es an einem falschen Passwort des Nutzers?
Nein. Der Nutzer ist an dieser Stelle schon angemeldet. Der Fehler liegt zwischen deiner App und dem IdP, ein geändertes Nutzerpasswort hilft also nicht.