OAuth-Autorisierung vs. Authentifizierung

87

Die OAuth-Terminologie hat mich schon lange beschäftigt. Ist OAuth-Autorisierung, wie einige vorschlagen würden, oder ist es Authentifizierung?

Korrigieren Sie mich, wenn ich falsch liege, aber ich habe Autorisierung immer so gelesen, dass jemandem Zugriff auf eine Ressource gewährt wird. OAuth scheint jedoch keine Implementierung zu haben, die tatsächlich den Zugriff auf Benutzer auf eine bestimmte Ressource ermöglicht. Alle OAuth-Implementierungen, über die gesprochen wird, stellen einem Benutzer ein Token zur Verfügung (signiert und manchmal verschlüsselt). Dieses Token wird dann bei jedem Aufruf an einen Back-End-Service-Endpunkt übergeben, wo es auf Gültigkeit überprüft wird, was wiederum kein OAuth-Problem darstellt.

Ist für die OAuth-Authentifizierung (in jedem Artikel wird angegeben, dass dies nicht der Fall ist) erforderlich, dass ein Benutzer Anmeldeinformationen bereitstellt, die wiederum beweisen, dass ein Benutzer Zugriff haben sollte / sollte?

Es scheint also, dass OAuth keine Autorisierung oder Authentifizierung ist, da diese von anderen Prozessen ausgeführt werden müssen. Was zum Teufel ist das? Ist es ein Prozess zur Kommunikation eines Tokens? Ist es ein Flusenwort, das wirklich keine spezifische Bedeutung hat?

Es ist schwer, eine Frage zu diesem Thema zu stellen, ohne rätselhaft und abergläubisch zu klingen (Geister und Kobolde), daher erwarte ich, dass die Beantwortung dieser Frage auch keine einfache Sache sein wird. Betreten auf eigene Gefahr.

edgarhsanchez
quelle
Ich fand auch diese Antworten hilfreich: security.stackexchange.com/questions/44611/…
Antak
OAuth 2.0 ist ein Sicherheitsprotokoll. Details: stackoverflow.com/a/54304326/3623172
Rajat

Antworten:

150

OAuth ist eine Spezifikation für die Autorisierung

OAuth 2.0 ist eine Spezifikation für die Autorisierung, jedoch NICHT für die Authentifizierung. RFC 6749, 3.1. Der Autorisierungsendpunkt lautet ausdrücklich wie folgt:

Der Autorisierungsendpunkt wird verwendet, um mit dem Ressourcenbesitzer zu interagieren und eine Autorisierungsgewährung zu erhalten. Der Autorisierungsserver MUSS zuerst die Identität des Ressourcenbesitzers überprüfen. Die Art und Weise, wie der Autorisierungsserver den Ressourcenbesitzer authentifiziert (z. B. Benutzername und Kennwort, Sitzungscookies), geht über den Rahmen dieser Spezifikation hinaus .


OAuth-Authentifizierung?

Die Authentifizierung enthält Informationen darüber, wer einer ist. Die Autorisierung enthält Informationen darüber, "wer wem welche Berechtigungen erteilt". Der Autorisierungsablauf enthält als ersten Schritt die Authentifizierung. Es ist der Grund, warum Menschen oft verwirrt sind.

Es gibt viele Bibliotheken und Dienste, die OAuth 2.0 zur Authentifizierung verwenden. Es wird oft als "Social Login" bezeichnet und macht die Leute verwirrter. Wenn "OAuth-Authentifizierung" (nicht "OAuth-Autorisierung") angezeigt wird, handelt es sich um eine Lösung, bei der OAuth zur Authentifizierung verwendet wird.


OpenID Connect

OpenID 1.0 und OpenID 2.0 sind alte Spezifikationen für die Authentifizierung. Diejenigen, die die Spezifikationen erstellt haben, erwarteten, dass Benutzer OpenID zur Authentifizierung verwenden. Einige Leute begannen jedoch, OAuth 2.0 für die Authentifizierung (nicht für die Autorisierung) zu verwenden, und die OAuth-Authentifizierung hat sich schnell durchgesetzt.

Aus Sicht der OpenID-Leute war die auf OAuth basierende Authentifizierung nicht sicher genug, aber sie mussten zugeben, dass die Leute die OAuth-Authentifizierung bevorzugten. Infolgedessen beschlossen die OpenID- Mitarbeiter, zusätzlich zu OAuth 2.0 eine neue Spezifikation, OpenID Connect , zu definieren .

Ja, das hat die Leute viel verwirrter gemacht.


Ein-Satz-Definitionen von OAuth 2.0 und OpenID Connect

OAuth 2.0 ist ein Framework, in dem ein Benutzer eines Dienstes einer Drittanbieteranwendung den Zugriff auf seine im Dienst gehosteten Daten ermöglichen kann, ohne der Anwendung seine Anmeldeinformationen (ID und Kennwort) mitzuteilen.

Geben Sie hier die Bildbeschreibung ein

OpenID Connect ist ein Framework über OAuth 2.0, in dem eine Drittanbieteranwendung die Identitätsinformationen eines Benutzers abrufen kann, die von einem Dienst verwaltet werden.

Geben Sie hier die Bildbeschreibung ein

(Diese Definitionen sind leider Auszüge aus der Übersichtsseite meines Unternehmens.)


Definitionen aus Sicht der Implementierer

Die Authentifizierung ist ein Prozess zum Bestimmen des Betreffs (= eindeutige Kennung) eines Endbenutzers. Es gibt viele Möglichkeiten, das Thema zu bestimmen. ID & Passwort, Fingerabdrücke, Iriserkennung usw.

Die Autorisierung ist ein Prozess zum Zuordnen des Betreffs zu den angeforderten Berechtigungen und der Clientanwendung, die die Berechtigungen angefordert hat. Ein Zugriffstoken repräsentiert die Zuordnung.


Siehe auch

  1. Full-Scratch-Implementierer von OAuth und OpenID Connect spricht über Ergebnisse
  2. Diagramme und Filme aller OAuth 2.0-Flows
  3. Diagramme aller OpenID Connect-Flows
  4. Die einfachste Anleitung zu OAuth 2.0
Takahiko Kawasaki
quelle
13
Für diejenigen, die sich fragen, warum die auf OAuth basierende Authentifizierung nicht sicher genug war , gehe ich davon aus , dass diese häufigen Fallstricke der Grund sind .
Antak
4
"Der Autorisierungsablauf enthält als ersten Schritt die Authentifizierung. Dies ist der Grund, warum Menschen häufig verwirrt sind." Gold.
Sully
1
Der einzige Unterschied, den ich zwischen den beiden Diagrammen sehen kann, ist, dass das erste die "Benutzerdaten" und das zweite die "Benutzeridentität" enthält. Ja, das ist verwirrend.
Joel_Blum