GNAP: OAuth die nächste Generation

Das Jahr war 2012, und ein überarbeitetes Sicherheitsprotokoll namens OAuth 2 durchsuchte das Web, sodass Benutzer Sicherheitsanbieter verwenden konnten, um sich einfach auf Websites anzumelden. Viele Single Sign-On-Systeme, von Cognito bis Okta von AWS, implementieren OAuth. Mit OAuth können Sie sich bei Google oder anderen Anbietern bei einer völlig anderen Website oder Anwendung authentifizieren.

Es funktioniert wie ein Bierfest. Sie gehen zu einem Schreibtisch und authentifizieren sich mit Ihrem Ausweis (und etwas Geld), und sie geben Ihnen Token. Von dort aus gehen Sie zu jedem Bierzelt und tauschen einen Gutschein gegen ein Bier aus. Der einzelne Brauer muss weder Ihren Ausweis überprüfen noch fragen, ob Sie bezahlt haben. Sie nehmen einfach das Zeichen und geben dir ein Bier. OAuth funktioniert genauso, jedoch mit Websites anstelle von Bieren.

Leider ist OAuth das beste Bierfestival, das 2020 zu bieten hat.

Ich habe mit Dan Moore von FusionAuth über OAuth und einen vorgeschlagenen Ersatz namens GNAP gesprochen - der wahrscheinlich ohne das G als „Nickerchen“ ausgesprochen wird. Die Aussprache unterstützt die Idee, dass Sicherheit ein wirklich aufregendes Feld ist. GNAP behebt einige Einschränkungen von OAuth und würzt es mit neuen Funktionen.

Warum OAuth ersetzen oder vielmehr erweitern? OAuth wurde für Browser entwickelt. Es wird davon ausgegangen, dass der Absender, der die Anforderung stellt, eine HTTP-Umleitung verarbeiten kann. Dieser Webbrowser-Fokus ist ein Stolperstein für mobile Apps oder andere „Dinge“ im „Internet der Dinge“. Darüber hinaus mögen OAuth-Parteien 2007 und erfordern, dass Sie Formularparameter anstelle von JSON veröffentlichen.

Die OAuth-Spezifikation war an einigen Stellen vage, und die Welt hat sich seit 2012 verändert. Es gibt eine Reihe von RFCs und BCPs, im Wesentlichen Zusatzspezifikationen, die Sie implementieren müssen, um mehr Funktionen, bessere Sicherheit und allgemeine Kompatibilität zu erzielen. Ein separater Versuch namens OAuth 2.1 hofft, einige dieser Addons zu einer kohärenteren Einzelspezifikation zusammenzufassen. Einige der Gründe für OAuth 2.1 finden Sie in Lee McGovern aus Oktas Beitrag „Wie viele RFCs sind erforderlich, um eine Glühbirne auszutauschen?“. OAuth 2.1 ist im Gegensatz zu GNAP nur eine inkrementelle Version ohne neue wesentliche Änderungen, abgesehen davon, dass der Stapel von Spezifikationen zu einer einzigen Spezifikation kombiniert wird.

Die GNAP-Spezifikation befindet sich noch in einem frühen Stadium. Die Autoren von GNAP planen, über OAuth 2.1 hinauszugehen und die Art des Protokolls selbst zu ändern. Anstatt HTTP-Parameter zu verwenden, können Sie JSON verwenden. Anwendungsendpunkte sind erkennbar. Sie müssen keine Weiterleitungen (oder die verschiedenen Hacks) unterstützen. Moore bezieht sich auf diese Änderungen unter dem entzückenden Begriff "Entwicklerergonomie".

Ein Hauptziel von GNAP ist die Trennung, wer die Ressourcen anfordert (RQ) und wem die Ressourcen gehören (RO).

IETF

GNAP schlägt außerdem vor, neue Sicherheitsfunktionen zu unterstützen, z.

  • Asynchroner und Anwendungs-URL-Start. Hierbei handelt es sich um verschiedene Authentifizierungspfade, mit denen sich der Client ohne Umleitung authentifizieren kann. Mit GNAP können sich Anwendungen auch bei Ressourcen von Drittanbietern authentifizieren, auf die der Ressourcenserver und der Autorisierungsserver keinen direkten Zugriff haben.
  • Fortsetzung anfordern. Diese ermöglichen es Clients, während des Authentifizierungsprozesses beispielsweise Weiterleitungen oder andere Authentifizierungsdetails auszuhandeln. Sie ermöglichen es einem Client auch, zusätzliche Berechtigungen oder Zugriffstoken auszuhandeln.
  • Mehrfachzugriffstoken. Diese ermöglichen es Clients, sich bei vielen Ressourcen gleichzeitig zu authentifizieren, beispielsweise als Benutzer und Administrator.
  • Token für Absenderbeschränkungen. Während es für diese Funktionalität Add-Ons zu OAuth 2 gibt, die als DPOP und MTLS bezeichnet werden, würde GNAP dies direkt in das Protokoll einbauen. Kehren Sie zu unserem Beispiel für ein Bierzelt zurück. Was wäre, wenn wir dem Verkäufer auch ein Passwort ins Ohr flüstern müssten, während wir ihm den Token geben? Wenn unser Token fallen gelassen (oder abgefangen) wurde, spielt dies keine Rolle, da der Inhaber das Passwort nicht haben würde.
  • Und GNAP lässt den Geist von Kerberos schreien.

Klingt gut? Können Sie GNAP noch heute verwenden? Wenn Sie an einer Zusammenarbeit interessiert sind, können Sie einen der Prototypen, die in den vorhandenen Vorschlag auf GitHub aufgenommen wurden, aufteilen.

Laut Moore wollen die Autoren GNAP im Jahr 2022 veröffentlichen. Da jeder Tag im Jahr 2020 wie eine Woche in einem typischen Jahr ist, ist GNAP weit entfernt. Die GNAP-Arbeitsgruppe sucht jedoch nach Mitarbeitern, und Sie können sich der Mailingliste anschließen und Ihr Feedback und Ihr Fachwissen abgeben. Ich denke, Sie können nicht alles auf der Welt reparieren, aber Sie können zumindest helfen, OAuth zu reparieren.