Was genau ist OAuth (Open Authorization)?

201

Was genau ist OAuth (Open Authorization)?

Ich habe einige Informationen von erhalten

Aber ich möchte mehr lernen und wissen. Ich suche Informationen zum Lebenszyklus. Warum verlassen sich die meisten sozialen Netzwerke auf dieses offene Protokoll?

Wird es in naher Zukunft mit den verschiedenen Technologien (z. B. ASP.NET) de facto?

bryanjclark
quelle

Antworten:

326

Was genau ist OAuth (Open Authorization)?

Mit OAuth können Sie einen Ressourcenanbieter (z. B. Facebook) darüber informieren, dass der Ressourcenbesitzer (z. B. Sie) einem Drittanbieter (z. B. einer Facebook-Anwendung) den Zugriff auf seine Informationen (z. B. die Liste Ihrer Freunde) gewährt .

Wenn Sie es so deutlich lesen, würde ich Ihre Verwirrung verstehen. Gehen wir also zu einem konkreten Beispiel: Beitritt zu einem weiteren sozialen Netzwerk!

Angenommen, Sie haben ein vorhandenes GMail-Konto. Sie entscheiden sich für LinkedIn. Das manuelle Hinzufügen all Ihrer vielen, vielen Freunde ist mühsam und fehleranfällig. Möglicherweise haben Sie die Hälfte der Zeit satt oder geben Tippfehler zur Einladung in die E-Mail-Adresse ein. Sie könnten also versucht sein, doch kein Konto zu erstellen.

Angesichts dieser Situation hat LinkedIn die gute Idee, ein Programm zu schreiben, das Ihre Freundesliste automatisch hinzufügt, da Computer bei lästigen und fehleranfälligen Aufgaben weitaus effizienter und effektiver sind. Da der Beitritt zum Netzwerk jetzt so einfach ist, können Sie ein solches Angebot auf keinen Fall ablehnen, oder?

Ohne eine API zum Austauschen dieser Kontaktliste müssten Sie LinkedIn den Benutzernamen und das Passwort für Ihr GMail-Konto geben, um ihnen zu viel Macht zu geben .

Hier kommt OAuth ins Spiel. Wenn Ihre GMail das OAuth-Protokoll unterstützt, kann LinkedIn Sie bitten, sie für den Zugriff auf Ihre GMail-Kontaktliste zu autorisieren.

OAuth ermöglicht:

  1. Unterschiedliche Zugriffsebenen: Nur-Lese-VS-Lese- / Schreibzugriff. Auf diese Weise können Sie Zugriff auf Ihre Benutzerliste oder einen bidirektionalen Zugriff gewähren, um Ihre neuen LinkedIn-Freunde automatisch mit Ihren GMail-Kontakten zu synchronisieren.
  2. Zugriffsgranularität: Sie können festlegen, dass nur Ihre Kontaktinformationen (Benutzername, E-Mail-Adresse, Geburtsdatum usw.) oder Ihre gesamte Freundesliste, Ihr Kalender und was nicht.
  3. Sie können den Zugriff über die Anwendung des Ressourcenanbieters verwalten. Wenn die Drittanbieteranwendung keinen Mechanismus zum Abbrechen des Zugriffs bietet, können Sie nicht mehr auf Ihre Informationen zugreifen. Mit OAuth ist es jederzeit möglich, den Zugriff zu widerrufen.

Wird es in naher Zukunft de facto (Standard?) Werden?

Nun, obwohl OAuth ein bedeutender Schritt nach vorne ist, löst es keine Probleme, wenn die Leute es nicht richtig verwenden. Wenn ein Ressourcenanbieter beispielsweise nur eine einzige Lese- / Schreibzugriffsebene auf alle Ihre Ressourcen gleichzeitig gewährt und keinen Mechanismus zum Verwalten des Zugriffs bereitstellt, hat dies keinen Sinn. Mit anderen Worten, OAuth ist ein Framework zur Bereitstellung von Autorisierungsfunktionen und nicht nur zur Authentifizierung.

In der Praxis passt es sehr gut zum Modell des sozialen Netzwerks. Es ist besonders beliebt für soziale Netzwerke, die "Plugins" von Drittanbietern zulassen möchten. Dies ist ein Bereich, in dem der Zugriff auf die Ressourcen von Natur aus erforderlich und von Natur aus unzuverlässig ist (dh Sie haben nur eine geringe oder keine Qualitätskontrolle über diese Anwendungen).

Ich habe nicht so viele andere Anwendungen in freier Wildbahn gesehen. Ich meine, ich weiß nicht , von einer Online - Finanzberatung Firma , die Ihre Bankdaten automatisch zugreifen, obwohl es könnte technisch auf dieser Weise verwendet werden.

André Caron
quelle
6
Du hast es leicht verständlich gemacht. Möglicherweise habe ich stattdessen die erste Zeile in so etwas geändert. "Mit OAuth können Sie einen Ressourcenanbieter (z. B. Google Mail) darüber informieren, dass der Ressourcenbesitzer (z. B. Sie, ein Google Mail-Benutzer) einem Drittanbieter (z. B. Ihrem LinkedIn-Konto) die Berechtigung zum Zugriff auf seine Informationen (z. B. Ihre Kontaktliste) erteilt." Das, was Sie geschrieben haben, dh Provider und Dritte "beide" sind Facebook, ist verwirrend. Obwohl es ein interessantes Szenario einführt, kann Oauth auch intern verwendet werden - zwischen verschiedenen Projekten Ihres Unternehmens. Richtig? Haben Sie deshalb ein kompliziertes Intro eingeführt?
Honig
Nach meinem Verständnis besteht der Zweck von OAuth darin, einer Drittanbieteranwendung im Namen des Ressourcenbesitzers eine zeitlich begrenzte Autorisierung zu erteilen, ohne Anmeldeinformationen zu teilen. Ich bin gespannt, ob ich OAuth benötige, um APIs, die auf meinem Anwendungsserver gehostet werden, von einer mobilen Anwendung aus zu nutzen (kein Dritter beteiligt).
Monish Kamble
Wenn mich eine vertrauenswürdige Partei autorisiert, bedeutet dies nicht, dass es sich auch um einen Authentifizierungsmechanismus handelt?
Variable
245

Was ist oAuth?

OAuth ist einfach ein sicheres Autorisierungsprotokoll, das sich mit der Autorisierung von Drittanbieteranwendungen befasst, auf die Benutzerdaten zuzugreifen, ohne deren Kennwort preiszugeben. z.B. (Login mit fb, gPlus, twitter auf vielen Websites ..) Alle funktionieren unter diesem Protokoll.

Beteiligten

Das Protokoll wird einfacher, wenn Sie die beteiligten Parteien kennen. Grundsätzlich sind drei Parteien beteiligt: ​​oAuth-Anbieter, oAuth-Kunde und Eigentümer.

  • oAuth Client (Anwendung, die auf Ihre Anmeldeinformationen zugreifen möchte)
  • oAuth Provider (zB Facebook, Twitter ...)
  • Besitzer (die Person mit Facebook, Twitter .. Konto)

Wie es funktioniert?

Ich habe ein Szenario angenommen, in dem eine Website (Stackoverflow) ein Login mit Facebook-Funktion hinzufügen muss. Somit ist Facebook oAuth Provider und der Stackoverflow ist oAuth Client.

  1. Dieser Schritt wird vom Entwickler der App ausgeführt . Zu Beginn hat Facebook (oAuth Provider) keine Ahnung vom Stackoverflow (oAuth Client), da keine Verbindung zwischen ihnen besteht. Der allererste Schritt besteht also darin, den Stackoverflow auf der Facebook- Entwicklerseite zu registrieren . Dies erfolgt manuell, wenn Entwickler die Informationen der App an Facebook weitergeben müssen, z. B. den Namen der App, die Website, das Logo und die Weiterleitungs-URL (wichtige). Dann wird der Stackoverflow erfolgreich registriert, hat eine Client-ID, ein Client-Geheimnis usw. von Facebook und ist mit OAUTH betriebsbereit . Geben Sie hier die Bildbeschreibung ein

    2. Wenn der Benutzer von stackoverflow auf Anmelden mit der Schaltfläche fb klickt . Stackoverflow fordert Facebook mit ClientId (fb verwendet es, um den Client zu erkennen) und redirectUrl an (fb kehrt nach Erfolg zu dieser URL zurück). Auf diese Weise wird der Benutzer zur Facebook-Anmeldeseite umgeleitet. Dies ist der beste Teil, den Benutzer (Eigentümer) dem Stackoverflow nicht als Facebook-Berechtigungsnachweis geben.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

  1. Nach dem Eigentümer erlauben Sie Stackoverflow, auf die Informationen zuzugreifen . Anschließend leitet Facebook zusammen mit dem in Schritt 2 bereitgestellten redirectUrl zusammen mit dem Authentifizierungscode zurück zum Stackoverflow .
  2. Dann kontaktiert Stackoverflow Facebook mit dem erhaltenen Authcode , um sicherzustellen, dass alles in Ordnung ist.
  3. Nur dann gibt Facebook Zugriffstoken für den Stackoverflow. Das Zugriffstoken wird dann vom Stapelüberlauf verwendet, um die Informationen des Besitzers ohne Verwendung eines Kennworts abzurufen. Dies ist das ganze Motiv von oAuth, bei dem akute Berechtigungsnachweise niemals Anwendungen von Drittanbietern ausgesetzt sind.

Für mehr:

Schnelles Video

Weblink

Balman Rawat
quelle
Sicher, Localhost ist auch eine URL. Warum verfallen Sie nicht und veröffentlichen das Ergebnis hier?
Balman Rawat
2
Ja, Sie können die IP-Adresse als Weiterleitungs-URL verwenden: redirect_uri = ' 127.0.0.1:4200 ' und der OAuth-Domainname sollte 127.0.0.1 sein
Samson Maben
Aber sollte die E-Mail sowohl auf dem oAuth-Client als auch auf dem oAuth-Anbieter identisch sein, damit sie funktioniert?
Rowayda Khayri
nette Erklärung
JayD
OAuth 2 ist ein Sicherheitsprotokoll, kein Autorisierungsprotokoll. Die Antwort beginnt mit der falschen Note.
Rajat
13

Einfach ausgedrückt ist OAuth eine Möglichkeit für Anwendungen, Anmeldeinformationen für Ihre Informationen zu erhalten, ohne Ihre Benutzeranmeldeinformationen direkt auf eine Website zu übertragen. Wenn Sie beispielsweise eine Anwendung auf Ihrer eigenen Website schreiben und möchten, dass Daten aus dem Facebook-Konto eines Benutzers verwendet werden, können Sie mit OAuth ein Token über eine Rückruf-URL abrufen und dann mit diesem Token die Facebook-API aufrufen, um deren Token abzurufen Verwenden Sie Daten, bis das Token abläuft. Websites verlassen sich darauf, weil es Programmierern ermöglicht, auf ihre Daten zuzugreifen, ohne dass der Benutzer ihre Informationen direkt offenlegen und seine Anmeldeinformationen online verbreiten muss, aber dennoch ein gewisses Maß an Schutz für die Daten bietet. Wird es de facto zur Autorisierungsmethode? Vielleicht hat es in letzter Zeit viel Unterstützung von Twitter, Facebook,

ameer
quelle
14
OAuth ist kein Authentifizierungsprozess, sondern ein Autorisierungsprozess.
André Caron
Ich impliziere nicht, dass die Anwendung eine direkte Authentifizierung benötigt, aber der Benutzer authentifiziert sich beim Dienstanbieter, um einen Dritten zum Zugriff auf Benutzerdaten zu autorisieren, glaube ich ...
ameer
Ich habe die Genauigkeit hinzugefügt, da OpenID speziell auf die delegierte Authentifizierung (Wiederverwendung eines vorhandenen externen Kontos) abzielt, in der Hoffnung, dass Benutzer ihre Freigabe-Anmeldeinformationen nicht mehr freigeben. OAuth zielt speziell auf die Autorisierung (Wiederverwendung von Ressourcen) ab, um den Informationsaustausch zu erleichtern.
André Caron
9

Oauth gewinnt definitiv an Dynamik und wird auch bei Unternehmens-APIs immer beliebter. In der App- und datengesteuerten Welt setzen Unternehmen APIs im Einklang mit Google, Facebook und Twitter immer mehr der Außenwelt aus. Mit dieser Entwicklung wird ein 3-Wege-Dreieck der Authentifizierung gebildet

1) API-Anbieter - Jedes Unternehmen, das seine Assets über API verfügbar macht, z. B. Amazon, Target usw. 2) Entwickler - Derjenige, der mobile / andere Apps über diese APIs erstellt. 3) Der Endbenutzer - Der Endbenutzer des vom - sagen registrierte / Gastnutzer von Amazon

Dies führt nun zu einer Situation im Zusammenhang mit der Sicherheit - (ich liste einige dieser Komplexitäten auf) 1) Sie als Endbenutzer möchten dem Entwickler den Zugriff auf APIs für Sie ermöglichen. 2) Der API-Anbieter muss den Entwickler und den Endbenutzer authentifizieren. 3) Der Endbenutzer sollte in der Lage sein, die Berechtigungen für die erteilte Zustimmung zu erteilen und zu widerrufen. 4) Der Entwickler kann dem API-Anbieter in unterschiedlichem Maße vertrauen was die Ebene der ihr erteilten Berechtigungen unterschiedlich ist

Das Oauth ist ein Autorisierungsframework, das versucht, das oben genannte Problem auf standardmäßige Weise zu lösen. Mit der Bekanntheit von APIs und Apps wird dieses Problem immer relevanter und jeder Standard, der versucht, es zu lösen - sei es ouath oder irgendein anderer - wird als API-Anbieter / Entwickler und sogar als Endbenutzer von Bedeutung sein!

Zufälligkeit
quelle
9

OAuth ( O pen Auth orization) ist ein offener Standard für das Zugriffsgewährungs- / Löschungsprotokoll. Auf diese Weise können Internetnutzer Websites oder Anwendungen Zugriff auf ihre Informationen auf anderen Websites gewähren, ohne ihnen jedoch die Kennwörter zu geben. Es geht nicht um Authentifizierung .

Oder

OAuth 2.0 ist ein Protokoll, mit dem ein Benutzer eingeschränkten Zugriff auf seine Ressourcen an einem Standort oder an einem anderen Standort gewähren kann, ohne seine Anmeldeinformationen offenlegen zu müssen.

  • Analogie 1: Viele Luxusautos werden heute mit einem Parkservice-Schlüssel geliefert. Es ist ein spezieller Schlüssel, den Sie dem Parkwächter geben und der im Gegensatz zu Ihrem normalen Schlüssel nicht zulässt, dass das Auto mehr als ein oder zwei Meilen fährt. Einige Valet-Schlüssel öffnen den Kofferraum nicht, während andere den Zugriff auf Ihr Bord-Adressbuch blockieren. Unabhängig davon, welche Einschränkungen der Parkservice-Schlüssel auferlegt, ist die Idee sehr klug. Sie gewähren jemandem mit einem speziellen Schlüssel eingeschränkten Zugang zu Ihrem Auto, während Sie mit Ihrem normalen Schlüssel alles entsperren. src von auth0

  • Analogie 2: Angenommen, wir möchten ein Antragsformular für ein Bankkonto ausfüllen. Hier arbeitet Oauth so, dass die Bank das Formular nicht mit dem Antragsteller ausfüllen, sondern mit Adhaar oder Reisepass ausfüllen kann.

    Hier sind die folgenden drei Einheiten beteiligt:

    1. Antragsteller dh Eigentümer
    2. Bankkonto ist OAuth Client, sie benötigen Informationen
    3. Die Adhaar / Passport ID ist der OAuth-Anbieter
Premraj
quelle
7

Bei OAuth geht es darum, die Autorisierung zu delegieren (jemanden auszuwählen, der die Autorisierung für Sie durchführen kann). Beachten Sie, dass Authentifizierung und Autorisierung unterschiedliche Dinge sind. OAuth ist Autorisierung (Zugriffskontrolle). Wenn Sie auch die Authentifizierung (ID-Überprüfung) implementieren möchten, kann das OpenID-Protokoll zusätzlich zu OAuth verwendet werden.

Alle großen Unternehmen wie Facebook, Google, Github, ... verwenden heutzutage diese Art der Authentifizierung / Autorisierung. Ich habe mich beispielsweise gerade mit meinem Google-Konto auf dieser Website angemeldet. Dies bedeutet, dass Stackoverflow mein Passwort nicht kennt und die Erlaubnis von Google erhält, in der mein Passwort (offensichtlich gehasht) gespeichert ist. Dies bietet viele Vorteile, einer davon ist; In naher Zukunft müssen Sie nicht auf jeder Website mehrere Konten erstellen. Eine Website (der Sie am meisten vertrauen) kann verwendet werden, um sich bei allen anderen Websites anzumelden. Sie müssen sich also nur ein Passwort merken.

Ozkan
quelle
2

OAuth passierte, als wir ein SO-Konto mit Facebook / Google-Button eröffneten.

  1. Anwendung (SO), die den Benutzer zur Autorisierungs-URL des Anbieters umleitet. (Anzeigen einer Webseite, auf der der Benutzer gefragt wird, ob er der Anwendung Zugriff zum Lesen und Aktualisieren ihrer Daten gewähren möchte.)
  2. Der Benutzer erklärt sich damit einverstanden, das Bewerbungsverfahren zu genehmigen.
  3. Der Dienstanbieter leitet den Benutzer zurück zur Anwendung (SO) und übergibt den Autorisierungscode als Parameter.
  4. SO tauscht den Code gegen eine Zugriffsgewährung aus.

Quelle: OAuth1-Dienstanbieter

John Joe
quelle
Hallo, ich muss mit der REST-API arbeiten, also installiere oAuth, tatsächlich verwende ich Magento. In localhost habe ich oAuth installiert. Auf dem Live-Server, wie kann ich installieren, ich verwende den GoDaddy VPS-Server, Hilfe? @ John Joe
Gem
@ Rathinam Hallo, ich würde gerne helfen, aber es ist aus meinem Fachwissen. So leid.
John Joe
Ist es möglich, dass ich die REST-API ohne oAuth verwende? @ John Joe
Gem
@ Rathinam ja, es hängt von dir ab
John Joe
1

OAuth ist ein offener Standard für die Autorisierung, der häufig verwendet wird, damit sich Internetbenutzer mit ihren Microsoft-, Google-, Facebook- oder Twitter-Konten bei Websites Dritter anmelden können, ohne ihr Kennwort preiszugeben.

Yuvraj Singh Shekhawat
quelle
2
Ich denke, Sie haben OAuth und OpenID
A23149577
0

OAuth ist ein Protokoll, das von Resource Owner (Facebook, Google, Hochtöner, Microsoft Live usw.) verwendet wird, um die erforderlichen Informationen bereitzustellen oder um eine Berechtigung für den Schreiberfolg für ein Drittanbieter-System (z. B. Ihre Website) bereitzustellen. Höchstwahrscheinlich sollten die Anmeldeinformationen ohne OAuth-Protokoll für die Systeme des dritten Teils verfügbar sein, was eine unangemessene Art der Kommunikation zwischen diesen Systemen darstellt.

Радослав Тодоров
quelle