Ein Brief an OAuth-Anbieter
(pilcrowonpaper.com)-
Ein Brief an OAuth-Anbieter
-
GitHub
- Der Token-Endpunkt gibt selbst bei Fehlern den Statuscode 200 zurück
- Für Fehlerantworten sollten die Statuscodes 400 oder 401 verwendet werden
-
Facebook
- Der Token-Endpunkt gibt benutzerdefinierte Fehlerantworten zurück
- Es sollte ein JSON-Objekt mit einem Fehlerfeld sein
-
TikTok
- Der Server verwendet den Parameter
client_keystattclient_id - Es gibt keinen Grund, von der Spezifikation abzuweichen
- Der Server verwendet den Parameter
-
Strava
- Der Server verwendet für den Scope-Parameter eine kommagetrennte Liste
- Es sollte eine durch Leerzeichen getrennte Liste sein
-
Naver
- Der Server gibt die Ablaufzeit des Tokens als String zurück
- Das ist ein Problem, das über die Frage der Spezifikationskonformität hinausgeht
-
Verschiedene OAuth-Anbieter
- Zur Client-Authentifizierung sollte HTTP Basic Authentication statt des Parameters
client_secretunterstützt werden - Im OAuth-2.1-Standard ist HTTP Basic Authentication optional, aber obwohl PKCE vorgeschrieben ist, verwenden die meisten Anbieter es dennoch nicht
- Zur Client-Authentifizierung sollte HTTP Basic Authentication statt des Parameters
-
AWS
- Bei der Verwendung mit OAuth-Client-Bibliotheken gingen mehrere Fehlermeldungen ein, aber da sich das Problem nicht reproduzieren ließ, wurde der entsprechende Inhalt entfernt
-
2 Kommentare
Beim Aufbau eines staatlichen Bürgerdienstprojekts habe ich die Erfahrung gemacht, dass allein die Implementierung der OAuth-(OIDC-)Funktion einen ganzen Monat gedauert hat...
Da wir keine externen Bibliotheken verwenden konnten, mussten wir alles einzeln selbst implementieren, und außer Kakao oder Google hat praktisch niemand den OAuth-Standard sauber eingehalten...
Bei Naver war es eher auf dem Niveau von „Hauptsache, der Login funktioniert“, sodass ich mich fragte, ob man das überhaupt so einsetzen kann, und bei Apple brauchte man, selbst wenn ich heute darüber nachdenke und mich nicht einmal mehr daran erinnere, wie ich es umgesetzt habe, mehr als dreimal so viel Implementierungscode wie bei bestehendem OAuth-Code.
Wie im obigen Text beschrieben, gab es Fälle, in denen die Response-Codes völliges Chaos waren, und es gab sogar Anbieter, die am Ende 418 (I'm a teapot) zurückgegeben haben.
Wegen solcher Erfahrungen nutze ich selbst praktische Funktionen wie Social Login lieber gar nicht mehr...
Hacker-News-Kommentare
Ein Nutzer hat im Intranet seines Unternehmens einen OAuth-Server implementiert. Ein anderes Team bat um eine Login-Implementierung, ohne der offiziellen Spezifikation zu folgen, und am Ende entstand eine inoffizielle OAuth-Variante
Bei der Nutzung von OAuth mit mehreren Anbietern und einer E-Mail-Registrierungsoption kommt es vor, dass man sich nicht mehr daran erinnert, wie man sich zuvor angemeldet hat, und versehentlich ein neues Konto erstellt
Vor einem Jahr wurden OAuth-Implementierungen für 100 populäre APIs erstellt, und die Erfahrung war ähnlich wie von OP beschrieben
Viele Anbieter unterstützen
prompt=select_accountnicht oder fordern Nutzer nicht dazu auf, das Konto auszuwählen, mit dem sie sich anmelden wollen. Das ist besonders bei OIDC problematischEs gingen Bugreports im Zusammenhang mit AWS ein, die sich jedoch nicht reproduzieren ließen, daher wurde der entsprechende Abschnitt aus dem Beitrag entfernt. Als allgemeine Checkliste für Problemfälle hätte er aber nützlich sein können
Eine offizielle Test-Suite würde bei der Implementierung offener Standards helfen. Da Spezifikationen schwer nachzuverfolgen sind, wäre eine überprüfbare Test-Suite nützlich
Das Problem bei Facebook scheint ein Fall zu sein, in dem OAuth2 mit einem bestehenden Service-Framework implementiert wurde, dabei aber nicht spezifikationskonform war. Das ähnelt allgemeinen Problemen beim Scripting
Einige Anbieter hielten sich nicht an die Spezifikation und entschieden sich für einen separaten Endpunkt für Refresh-Token
An OIDC/OAuth-Anbieter wird appelliert, SCIM sauber zu unterstützen und Systeme mit einer "API-first"-Denkweise zu entwerfen. Bevor zu GNAP gewechselt wird, sollten diese Entscheidungen noch einmal überdacht werden