Sicherheit des OAuth 1.0-Protokolls ( RFC 5849 ) beruht auf der Annahme, dass ein in eine Client-Anwendung eingebetteter geheimer Schlüssel geheim gehalten werden kann. Diese Annahme ist jedoch naiv.
In OAuth 2.0 ( RFC 6749 ), wird eine solche naive Client-Anwendung als vertraulich Kunde. Andererseits wird eine Client-Anwendung in einer Umgebung, in der es schwierig ist, einen geheimen Schlüssel geheim zu halten, als öffentlich Kunde. Siehe 2.1. Client-Typen für Einzelheiten.
In diesem Sinne ist OAuth 1.0 eine Spezifikation nur für vertrauliche Clients.
" OAuth 2.0 und der Weg zur Hölle "Es heißt, dass OAuth 2.0 weniger sicher ist, aber es gibt keinen praktischen Unterschied im Sicherheitsniveau zwischen OAuth 1.0-Clients und vertraulichen OAuth 2.0-Clients. OAuth 1.0 erfordert die Berechnung der Signatur, aber das erhöht die Sicherheit nicht, wenn bereits sichergestellt ist, dass ein geheimer Schlüssel auf der Client-Seite vertraulich gehalten werden kann. Die Berechnung der Signatur ist nur eine umständliche Berechnung ohne praktische Sicherheitsverbesserung. Verglichen mit der Einfachheit, mit der sich ein OAuth 2.0-Client über TLS mit einem Server verbindet und einfach nur client_id
y client_secret
kann nicht behauptet werden, dass die umständliche Berechnung in Bezug auf die Sicherheit besser ist.
Außerdem wird in RFC 5849 (OAuth 1.0) nichts über offene Weiterleitungen während RFC 6749 (OAuth 2.0) dies tut. Das heißt, oauth_callback
Parameter von OAuth 1.0 kann zu einer Sicherheitslücke werden.
Daher glaube ich nicht, dass OAuth 1.0 sicherer ist als OAuth 2.0.
[14. April 2016] Ergänzung zur Verdeutlichung meines Standpunkts
Die Sicherheit von OAuth 1.0 beruht auf der Berechnung von Signaturen. Eine Signatur wird unter Verwendung eines geheimen Schlüssels berechnet, wobei ein geheimer Schlüssel ein gemeinsamer Schlüssel für HMAC-SHA1 ist ( RFC 5849, 3.4.2 ) oder einen privaten Schlüssel für RSA-SHA1 ( RFC 5849, 3.4.3 ). Jeder, der den geheimen Schlüssel kennt, kann die Signatur errechnen. Wenn also der geheime Schlüssel kompromittiert ist, ist die Komplexität der Signaturberechnung bedeutungslos, wie komplex sie auch sein mag.
Das bedeutet, dass die Sicherheit von OAuth 1.0 nicht auf der Komplexität und Logik der Signaturberechnung beruht, sondern lediglich auf der Vertraulichkeit eines geheimen Schlüssels. Mit anderen Worten: Für die Sicherheit von OAuth 1.0 ist lediglich die Bedingung erforderlich, dass ein geheimer Schlüssel vertraulich gehalten werden kann. Das mag extrem klingen, aber die Berechnung von Unterschriften erhöht die Sicherheit nicht, wenn die Bedingung bereits erfüllt ist.
Ähnlich verhält es sich mit OAuth 2.0 vertraulich Die Kunden verlassen sich auf dieselbe Bedingung. Wenn die Bedingung bereits erfüllt ist, gibt es dann ein Problem beim Aufbau einer sicheren Verbindung mit TLS und dem Senden von client_id
y client_secret
zu einem Autorisierungsserver über die gesicherte Verbindung? Gibt es einen großen Unterschied im Sicherheitsniveau zwischen vertraulichen OAuth 1.0- und OAuth 2.0-Clients, wenn beide auf derselben Bedingung beruhen?
Ich kann keinen guten Grund finden, warum OAuth 1.0 OAuth 2.0 die Schuld geben sollte. Tatsache ist einfach, dass (1) OAuth 1.0 nur eine Spezifikation nur für vertrauliche Clients ist und (2) OAuth 2.0 das Protokoll für vertrauliche Clients vereinfacht und unterstützt hat öffentlich auch die Kunden. Unabhängig davon, ob es gut bekannt ist oder nicht, werden Smartphone-Anwendungen als öffentliche Clients eingestuft ( RFC 6749, 9 ), die von OAuth 2.0 profitieren.
0 Stimmen
Die Antwort finden Sie hier OAuth 2.0 - Überblick