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.

"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!).

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

Meine Damen und Herren, prÀsentieren Sie: 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?

â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)!

â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!â
- WĂ€hlen Sie Ihren E-Mail-Dienst.
- Gehen Sie bei Bedarf zur Webseite des E-Mail-Anbieters und melden Sie sich in Ihrem Konto an.
- Geben Sie der Webseite Terrible Pun of the Day die Erlaubnis, auf Ihre Kontakte zuzugreifen.
- 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:

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

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

Eine Anwendung, die weiĂ Resource Ownerâa und bei der Resource Ownerâa bereits ein Konto hat. - Ressourcenserver:

Programmierschnittstelle (API) oder Dienst, den Client im Namen von nutzen möchte Resource Ownerâa. - Weiterleitungs-URI:

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:

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:

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:

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:

Diese ID wird verwendet, um Clientâa auf Autorisierungsserverâe zu identifizieren. - Client-Geheimnis:

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

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:

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.

- 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.
- 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.
- Autorisierungsserver ĂŒberprĂŒft Sie, indem er, falls erforderlich, nach Anmeldedaten fragt.
- Autorisierungsserver zeigt ein Formular Zustimmung (BestĂ€tigung) mit einer Liste aller Bereiche, die von Clientâa angefordert werden. Sie stimmen zu oder lehnen ab.
- Autorisierungsserver leitet Sie auf die Website von Clientâa um, unter Verwendung von Weiterleitungs-URI zusammen mit Autorisierungscode (Autorisierungscode).
- Client stellt direkt eine Verbindung her mit Autorisierungsserverâo (um den Browser zu umgehen. Resource Ownerund sicher sendet Client-ID, Client-Geheimnis und Autorisierungscode.
- Autorisierungsserver die Daten ĂŒberprĂŒft und mit Zugangstokeneinem (Zugriffstoken) antwortet.
- 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.

ââ 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. (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.

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.

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].

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 und das Entwicklerprogramm von Okta!
P.S. vom Ăbersetzer
Lesen Sie auch in unserem Blog:
- «»;
- «»;
- «»;
- «».
Quelle: habr.com











