Illustriertes Handbuch zu OAuth und OpenID Connect

Anmerkung des Übersetzers.: In diesem hervorragenden Material von Okta werden die Funktionsprinzipien von OAuth und OIDC (OpenID Connect) einfach und anschaulich erlĂ€utert. Dieses Wissen ist fĂŒr Entwickler, Systemadministratoren und sogar "normale Benutzer" beliebter Webanwendungen, die wahrscheinlich ebenfalls vertrauliche Daten mit anderen Diensten austauschen, nĂŒtzlich.

Im "Steinzeitalter" des Internets war es einfach, Informationen zwischen Diensten auszutauschen. Man gab einfach seinen Login und sein Passwort von einem Dienst an einen anderen weiter, damit dieser in das eigene Konto einloggen und alle benötigten Informationen abrufen konnte.

Illustriertes Handbuch zu OAuth und OpenID Connect
"Geben Sie Ihr Bankkonto an." – "Wir versprechen, dass mit Passwort und Geld alles in Ordnung sein wird. Wirklich ganz ehrlich!" *hi hi*

Schrecklich! Niemand sollte jemals von einem Benutzer verlangen, sein Login und Passwort, seine Zugangsdaten, mit einem anderen Dienst zu teilen. Es gibt keine Garantie, dass die Organisation hinter diesem Dienst die Daten sicher speichert und nicht mehr persönliche Informationen sammelt, als nötig ist. Das mag verrĂŒckt erscheinen, aber einige Anwendungen praktizieren diese Methode nach wie vor!

Heute gibt es einen einheitlichen Standard, der es einem Dienst ermöglicht, sicher auf die Daten eines anderen zuzugreifen. Leider verwenden solche Standards eine Menge Jargon und Fachbegriffe, was das VerstÀndnis erschwert. Ziel dieses Materials ist es, mit einfachen Illustrationen zu erklÀren, wie sie funktionieren (Denkst du, meine Zeichnungen sind wie Kinderkritzeleien? Na und!).

Illustriertes Handbuch zu OAuth und OpenID Connect

Übrigens ist dieses Handbuch auch im Videoformat verfĂŒgbar:

Video abspielen

Meine Damen und Herren, prÀsentieren Sie: OAuth 2.0

OAuth 2.0 ist ein Sicherheitsstandard, der es einer Anwendung ermöglicht, die Erlaubnis zum Zugriff auf Informationen in einer anderen Anwendung zu erhalten. Der Vorgang zur Erteilung der Erlaubnis [permission] (oder Zustimmung [consent]) wird oft als Autorisierung [authorization] oder sogar delegierte Autorisierung [delegated authorization]. Mit diesem Standard erlauben Sie einer Anwendung, Daten abzurufen oder Funktionen einer anderen Anwendung in Ihrem Namen zu nutzen, ohne ihr Ihr Passwort mitzuteilen. Cool!

Als Beispiel nehmen wir an, Sie haben eine Website mit dem Titel „Der missratene Wortwitz des Tages“ [Terrible Pun of the Day] Und Sie haben beschlossen, sich dort zu registrieren, um tĂ€glich Wortspiele in Form von Textnachrichten auf Ihr Telefon zu erhalten. Ihnen hat die Webseite sehr gut gefallen, und Sie haben beschlossen, sie mit all Ihren Bekannten zu teilen. Schließlich mögen alle schrecklichen Wortspiele, nicht wahr?

Illustriertes Handbuch zu OAuth und OpenID Connect
„Missratener Kalauer des Tages: Haben Sie von dem Typen gehört, der seine linke KörperhĂ€lfte verloren hat? Jetzt hat er immer recht!“ (Übersetzung ungefĂ€hr, da im Original ein Wortspiel ist – Anm. der Übers.)

Es ist klar, dass es keine Option ist, jedem Einzelnen aus der Kontaktliste zu schreiben. Und wenn Sie auch nur ein kleines bisschen so sind wie ich, werden Sie alles tun, um unnötige Arbeit zu vermeiden. GlĂŒcklicherweise kann Terrible Pun of the Day alle Ihre Freunde selbst einladen! Dazu mĂŒssen Sie ihm lediglich Zugriff auf die E-Mail-Kontakte gewĂ€hren – die Webseite sendet ihnen automatisch Einladungen (OAuth regelt das)!

Illustriertes Handbuch zu OAuth und OpenID Connect
„Alle lieben Wortspiele! – Schon eingeloggt? – Möchten Sie der Webseite Terrible Pun of the Day Zugriff auf die Kontaktliste gewĂ€hren? – Danke! Jetzt werden wir jedem von Ihren Freunden bis in alle Ewigkeit tĂ€gliche Erinnerungen senden! Sie sind der beste Freund!“

  1. WĂ€hlen Sie Ihren E-Mail-Dienst.
  2. Gehen Sie bei Bedarf zur Webseite des E-Mail-Anbieters und melden Sie sich in Ihrem Konto an.
  3. Geben Sie der Webseite Terrible Pun of the Day die Erlaubnis, auf Ihre Kontakte zuzugreifen.
  4. Kehren Sie zur Webseite Terrible Pun of the Day zurĂŒck.

Falls Sie Ihre Meinung Àndern, bieten Anwendungen, die OAuth verwenden, auch eine Möglichkeit, den Zugriff zu widerrufen. Wenn Sie entscheiden, dass Sie Ihre Kontakte nicht mehr mit Terrible Pun of the Day teilen möchten, können Sie zur Webseite des E-Mail-Anbieters gehen und die Webseite mit den Wortspielen aus der Liste der autorisierten Anwendungen entfernen.

OAuth-Flow

Gerade haben wir das durchlaufen, was normalerweise als Flow [flow] OAuth bekannt ist. In unserem Beispiel besteht dieser Flow aus sichtbaren Schritten sowie einigen unsichtbaren Schritten, in denen zwei Dienste sich ĂŒber den sicheren Austausch von Informationen einigen. Im vorherigen Beispiel mit Terrible Pun of the Day wird der am weitesten verbreitete OAuth 2.0-Flow verwendet, der als „Authorization Code Flow“ bekannt ist. [„authorization code“ flow].

Bevor wir in die Einzelheiten des OAuth-Betriebs eintauchen, lassen Sie uns ĂŒber die Bedeutung einiger Begriffe sprechen:

  • Resource Owner:

    Illustriertes Handbuch zu OAuth und OpenID Connect

    Das sind Sie! Sie besitzen Ihre Anmeldeinformationen, Ihre Daten und steuern alle Aktionen, die mit Ihren Konten durchgefĂŒhrt werden können.

  • Client:

    Illustriertes Handbuch zu OAuth und OpenID Connect

    Eine Anwendung (z. B. der Dienst Terrible Pun of the Day), die Zugriff erhalten oder bestimmte Aktionen im Namen von Resource Owner‘a.

  • Autorisierungsserver:

    Illustriertes Handbuch zu OAuth und OpenID Connect

    Eine Anwendung, die weiß Resource Owner‘a und bei der Resource Owner‘a bereits ein Konto hat.

  • Ressourcenserver:

    Illustriertes Handbuch zu OAuth und OpenID Connect

    Programmierschnittstelle (API) oder Dienst, den Client im Namen von nutzen möchte Resource Owner‘a.

  • Weiterleitungs-URI:

    Illustriertes Handbuch zu OAuth und OpenID Connect

    Ein Link, ĂŒber den Autorisierungsserver weiterleitet Resource Owner‘a nach der Erteilung der Genehmigung Client‘u. Manchmal wird es auch als „Callback-URL“ bezeichnet.

  • Antworttyp:

    Illustriertes Handbuch zu OAuth und OpenID Connect

    Der Typ der Informationen, die erwartet werden, dass sie erhalten werden Client. Der hĂ€ufigste Antworttyp‘a ist der Code, das heißt Client beabsichtigt zu erhalten Autorisierungscode.

  • Bereich:

    Illustriertes Handbuch zu OAuth und OpenID Connect

    Dies ist eine detaillierte Beschreibung der Berechtigungen, die erforderlich sind Client‘u, wie z. B. der Zugriff auf Daten oder die AusfĂŒhrung bestimmter Aktionen.

  • Zustimmung:

    Illustriertes Handbuch zu OAuth und OpenID Connect

    Autorisierungsserver nimmt Bereiche, die angefordert werden Client‘a, und fragt Resource Owner‘a, ob er bereit ist, Client‘u die entsprechenden Berechtigungen zu geben.

  • Client-ID:

    Illustriertes Handbuch zu OAuth und OpenID Connect

    Diese ID wird verwendet, um Client‘a auf Autorisierungsserver‘e zu identifizieren.

  • Client-Geheimnis:

    Illustriertes Handbuch zu OAuth und OpenID Connect

    Dies ist ein Passwort, das nur Client‘u und Autorisierungsserver‘u bekannt ist. Es ermöglicht ihnen, Informationen vertraulich auszutauschen.

  • Autorisierungscode:

    Illustriertes Handbuch zu OAuth und OpenID Connect

    Ein temporĂ€rer Code mit einer kurzen GĂŒltigkeitsdauer, den Client ein Framework zur Erstellung von Komponenten, die Programme sind, die in ihrer eigenen Sandbox ausgefĂŒhrt werden und ĂŒber IPC mit anderen Komponenten interagieren können. Autorisierungsserver‘u im Austausch gegen Zugangstoken.

  • Zugangstoken:

    Illustriertes Handbuch zu OAuth und OpenID Connect

    Ein SchlĂŒssel, den der Client verwenden wird, um sich mit Ressourcenserver‘o zu verbinden. Eine Art Ausweis oder SchlĂŒsselkarte, die Client‘u die Erlaubnis gibt, Daten abzufragen oder Aktionen auf Ressourcenserver‘e in Ihrem Namen auszufĂŒhren.

Hinweis: Manchmal sind der Autorisierungsserver und der Ressourcenserver derselbe Server. In einigen FÀllen können es jedoch verschiedene Server sein, die sogar nicht zur selben Organisation gehören. Beispielsweise könnte der Autorisierungsserver ein Drittanbieterdienst sein, dem der Ressourcenserver vertraut.

Nun, da wir mit den grundlegenden Begriffen von OAuth 2.0 vertraut sind, lassen Sie uns zu unserem Beispiel zurĂŒckkehren und genauer betrachten, was in dem OAuth-Thread passiert.

Illustriertes Handbuch zu OAuth und OpenID Connect

  1. Sie, Resource Owner, möchten dem Dienst Terrible Pun of the Day (Client‘u) Zugriff auf Ihre Kontakte geben, damit dieser Einladungen an Ihre Freunde versenden kann.
  2. Client leitet den Browser zur Seite von Autorisierungsserver‘a um und schließt im Antrag Client-ID, Weiterleitungs-URI, Antworttyp und eines oder mehrere Bereiche (Berechtigungen) ein, die er benötigt.
  3. Autorisierungsserver ĂŒberprĂŒft Sie, indem er, falls erforderlich, nach Anmeldedaten fragt.
  4. Autorisierungsserver zeigt ein Formular Zustimmung (BestĂ€tigung) mit einer Liste aller Bereiche, die von Client‘a angefordert werden. Sie stimmen zu oder lehnen ab.
  5. Autorisierungsserver leitet Sie auf die Website von Client‘a um, unter Verwendung von Weiterleitungs-URI zusammen mit Autorisierungscode (Autorisierungscode).
  6. Client stellt direkt eine Verbindung her mit Autorisierungsserver‘o (um den Browser zu umgehen. Resource Ownerund sicher sendet Client-ID, Client-Geheimnis und Autorisierungscode.
  7. Autorisierungsserver die Daten ĂŒberprĂŒft und mit Zugangstokeneinem (Zugriffstoken) antwortet.
  8. Jetzt Client kann verwenden Zugangstoken um eine Anfrage zu senden, um Ressourcenserver eine Kontaktliste zu erhalten.

Client-ID und Secret

Lange bevor Sie Terrible Pun of the Day den Zugriff auf Ihre Kontakte gestattet haben, haben Client und Autorisierungsserver eine Arbeitsbeziehung etabliert. Der Autorisierungsserver generierte die Client-ID und das Client-Secret (manchmal auch genannt App-ID und App-Secret) und sandte sie an den Client zur weiteren Interaktion im Rahmen von OAuth.

Illustriertes Handbuch zu OAuth und OpenID Connect
„— Hi! Ich wĂŒrde gerne mit dir arbeiten! — Kein Problem! Hier sind deine Client-ID und das Secret!“

Der Name deutet darauf hin, dass das Client-Secret geheim gehalten werden sollte, damit nur der Client und der Autorisierungsserver es kennen. Schließlich bestĂ€tigt der Autorisierungsserver mit dessen Hilfe die Echtheit des Clients.

Aber das ist noch nicht alles
 Bitte begrĂŒĂŸen Sie OpenID Connect!

OAuth 2.0 wurde nur fĂŒr Autorisierung entwickelt – um den Zugang zu Daten und Funktionen von einer Anwendung zu einer anderen zu ermöglichen. OpenID Connect (OIDC) ist eine Schicht ĂŒber OAuth 2.0, die Informationen ĂŒber die Anmeldung und das Benutzerprofil des angemeldeten Kontos hinzufĂŒgt. Die Verwaltung der Anmeldesitzung wird oft als Authentifizierung [authentication]bezeichnet, wĂ€hrend die Informationen ĂŒber den angemeldeten Benutzer (d.h. ĂŒber Resource Ownerdie IdentitĂ€t), personenbezogene Daten [identity]. Wenn der Autorisierungsserver OIDC unterstĂŒtzt, wird er manchmal als IdentitĂ€tsanbieter [identity provider]bezeichnet, da er Informationen ĂŒber Clientdie IdentitĂ€t bereitstellt. Resource Owner‘e zu identifizieren.

OpenID Connect ermöglicht Szenarien, in denen sich ein Benutzer mit nur einer Anmeldung in mehreren Anwendungen anmelden kann – dieser Ansatz ist auch bekannt als Single Sign-On (SSO). Zum Beispiel kann eine Anwendung SSO-Integrationen mit sozialen Netzwerken wie Facebook oder Twitter unterstĂŒtzen, sodass Benutzer ein Konto verwenden können, das sie bereits haben und das sie bevorzugen.

Illustriertes Handbuch zu OAuth und OpenID Connect

Der OpenID Connect-Flow sieht Ă€hnlich aus wie bei OAuth. Der einzige Unterschied besteht darin, dass im ursprĂŒnglichen Anfrage der verwendete spezifische Scope openid, und Client er letztendlich sowohl Zugangstoken, als auch ID-Token.

Illustriertes Handbuch zu OAuth und OpenID Connect

So wie im OAuth-Flow ist Zugangstoken im OpenID Connect ein Wert, der fĂŒr Clientden Server nicht verstĂ€ndlich ist. Aus der Perspektive Clientdes Authentifizierungsservers Zugangstoken stellt er eine Zeichenfolge dar, die zusammen mit jeder Anfrage an Ressourcenserverden Server ĂŒbermittelt wird, der dann prĂŒft, ob der Token gĂŒltig ist. ID-Token stellt etwas völlig anderes dar.

Das ID-Token ist ein JWT

ID-Token — eine speziell formatierte Zeichenfolge, die als JSON Web Token oder JWT bekannt ist. (Manchmal wird JWT als „jots“ ausgesprochen). FĂŒr Außenstehende kann JWT wie ein unverstĂ€ndliches Kauderwelsch erscheinen, jedoch Client kann aus JWT verschiedene Informationen wie ID, Benutzername, Anmeldezeit, Ablaufzeit ID-Tokenund mögliche Versuche zur Manipulation von JWT extrahiert werden. Die Daten innerhalb ID-Tokenwerden als Claims [claims].

Illustriertes Handbuch zu OAuth und OpenID Connect

Im Falle von OIDC gibt es auch einen standardisierten Weg, wie man Client zusÀtzliche Informationen zur IdentitÀt [identity] ab Autorisierungsserveranfordern kann, wie zum Beispiel die E-Mail-Adresse, unter Verwendung von Zugangstoken.

ZusÀtzliche Informationen zu OAuth und OIDC

Also, wir haben die Grundprinzipien von OAuth und OIDC kurz behandelt. Bereit fĂŒr tiefere Einblicke? Hier sind zusĂ€tzliche Ressourcen, die helfen, mehr ĂŒber OAuth 2.0 und OpenID Connect zu erfahren:

Wie gewohnt, zögern Sie nicht, Kommentare abzugeben. Um ĂŒber unsere neuesten Angebote informiert zu bleiben, abonnieren Sie Twitter und YouTube das Entwicklerprogramm von Okta!

P.S. vom Übersetzer

Lesen Sie auch in unserem Blog:

Quelle: habr.com

60GB SSD 8Gb DDR4