OpenID vs OAuth
July 3, 2024
Um die Sicherheit von Benutzerinformationen zu gewährleisten und es Drittanbieteranwendungen zu ermöglichen, auf eingeschränkte Ressourcen zuzugreifen, haben sich zwei gängige Technologien etabliert: OpenID Connect und OAuth. Obwohl diese beiden oft zusammen diskutiert werden, unterscheiden sie sich grundlegend in ihrer funktionalen Ausrichtung und ihren Kernzielen.
Konkret konzentriert sich OAuth auf den Aufbau eines Autorisierungsrahmens, dessen Kernzweck darin besteht, Drittanbieteranwendungen die Erlaubnis zu erteilen, auf bestimmte Ressourcen zuzugreifen, ohne direkt die Überprüfung der Identität des Benutzers einzubeziehen. Im Gegensatz dazu ist OpenID Connect genau als Identitätsauthentifizierungsdienst positioniert, der die Lücke schließt, die OAuth im Bereich der Identitätserkennung hat, und die Echtheit und Zuverlässigkeit der Benutzeridentitäten sicherstellt.
In diesem Blog werden wir das Wesen, die Funktionsmechanismen, typische Anwendungsszenarien und die subtile, aber enge Beziehung zwischen OpenID Connect und OAuth vertiefen.
Was ist OpenID Connect?
OpenID Connect (OIDC) ist ein Authentifizierungsprotokoll, das auf dem OAuth 2.0-Framework basiert und die Funktionalität von OAuth durch die Einführung des Konzepts eines ID-Tokens erweitert. OIDC ermöglicht es Benutzern nicht nur, Drittanbieteranwendungen den Zugriff auf ihre Ressourcen zu autorisieren, sondern bietet auch eine Überprüfung der Benutzeridentitätsinformationen, wodurch der sichere Zugriff auf mehrere Dienste mit einem einzigen Anmeldezugang ermöglicht wird.
Im Vergleich zu OAuth 2.0 besteht der Kernunterschied von OIDC in der Hinzufügung der Authentifizierungsschicht, während sich OAuth 2.0 hauptsächlich auf die Autorisierung konzentriert, wodurch Benutzer die Zugriffsberechtigungen von Drittanbieteranwendungen auf ihre Ressourcen kontrollieren können, ohne die spezifische Überprüfung der Benutzeridentität einzubeziehen.
Der OpenID Connect-Authentifizierungsprozess:
-
Zugriff auf die Anwendung: Wenn ein Benutzer eine Anwendung oder einen Dienst nutzen möchte und die Anwendung die Identität des Benutzers überprüfen muss, wird der Benutzer zum Identitätsauthentifizierungsdienstleister, dem OpenID Connect-Provider (OP), weitergeleitet, um sich anzumelden.
-
Benutzeranmeldung: Der Benutzer gibt seinen Benutzernamen und sein Passwort (oder durchläuft andere vom OP unterstützte Authentifizierungsmechanismen) auf der Anmeldeoberfläche des OP ein. Sobald der Benutzer erfolgreich angemeldet ist, bestätigt der OpenID Connect-Provider die Identität des Benutzers.
-
Ausstellung des ID-Tokens: Nach der Bestätigung der Benutzeridentität generiert der OpenID Connect-Provider ein spezielles Token, das als ID-Token bezeichnet wird. Dieses Token enthält die Identitätsinformationen des Benutzers, wie den Benutzernamen, die E-Mail-Adresse und andere wichtige Daten, und gewährleistet die digitale Darstellung und Übertragung der Benutzeridentität.
-
Verwendung des ID-Tokens: Nach Erhalt des ID-Tokens kann der Benutzer es der zuvor gewünschten Anwendung vorlegen. Die Anwendung aktiviert dann den Überprüfungsmechanismus, um das Token zu überprüfen und sicherzustellen, dass es von einem vertrauenswürdigen OpenID Connect-Provider ausgestellt wurde und nicht abgelaufen ist.
-
Zugriff auf die Anwendung: Sobald die Anwendung die Gültigkeit des ID-Tokens überprüft hat, ermöglicht sie dem Benutzer den Zugriff auf die geschützten Ressourcen oder Dienste. Auf diese Weise muss der Benutzer sich nicht bei jeder Anwendung separat registrieren und anmelden, sondern kann das vom OpenID Connect-Provider ausgestellte ID-Token verwenden.
-
Sicherheitsgewährleistung: OpenID Connect verwendet fortschrittliche JSON Web Token (JWT)-Technologie, um die Tokens zu generieren und zu überprüfen, wodurch die Risiken von Datenmanipulation und Diebstahl effektiv gemindert werden. Darüber hinaus unterstützt OpenID Connect flexibel mehrere Authentifizierungs- und Autorisierungsmodi, wie den Autorisierungscode-Modus, den impliziten Modus und den Hybridmodus, um den Sicherheitsanforderungen verschiedener Szenarien gerecht zu werden.
Was ist OAuth?
Kurz gesagt ist OAuth ein Protokoll, das es Drittanbieteranwendungen ermöglicht, auf sensible Ressourcen (wie Fotobibliotheken, Kontaktlisten usw.) eines Benutzers auf einem anderen Dienst zuzugreifen, ohne direkt auf die Anmeldeinformationen des Benutzers (Benutzername und Passwort) zugreifen zu müssen. Dieser Mechanismus ist eher auf "Autorisierung" als auf "Authentifizierung" ausgerichtet.
Beispielsweise, wenn Sie sich mit Ihrem Google-Konto bei einer Nachrichten-App anmelden möchten, kann die App mit OAuth Ihre öffentlichen Informationen (wie Avatar und Spitzname) von Ihrem Google-Konto anfordern, ohne dass Sie der Nachrichten-App direkt den Google-Konto-Benutzernamen und das Passwort mitteilen müssen.
Der OAuth-Autorisierungsprozess:
-
Benutzeranfrage zur Autorisierung: Angenommen, Sie verwenden eine Social-Media-App, die auf Informationen aus Ihrem Konto in einem anderen sozialen Netzwerk zugreifen möchte. Diese Informationen sind jedoch geschützt, daher ist eine Autorisierung erforderlich.
-
Weiterleitung zum Autorisierungsserver: Die Drittanbieteranwendung leitet Ihre Anfrage an eine Seite auf einem Autorisierungsserver weiter, auf der Sie sich normalerweise bei dem Dienst anmelden müssen, den Sie autorisieren möchten.
-
Benutzeranmeldung und Autorisierung: Auf der Seite des Autorisierungsservers müssen Sie sich mit Ihrem Konto anmelden. Nach der Anmeldung wird die Seite Sie fragen, ob Sie zustimmen, dass die Drittanbieteranwendung auf Ihre Informationen zugreifen darf.
-
Autorisierungsserver stellt Zugriffstoken aus: Wenn Sie zustimmen, generiert der Autorisierungsserver ein spezielles "Pass", das als Zugriffstoken bezeichnet wird. Dieses Token ähnelt einem temporären Eintrittsausweis, der der Drittanbieteranwendung für einen bestimmten Zeitraum den Zugriff auf Ihre Informationen ermöglicht.
-
Die Drittanbieteranwendung verwendet das Zugriffstoken: Sobald die Drittanbieteranwendung das Zugriffstoken erhalten hat, kann sie dieses Token verwenden, um für einen bestimmten Zeitraum Ihre Informationen anzufordern. Bei jeder Anfrage muss sie dieses Token vorlegen, um nachzuweisen, dass sie von Ihnen autorisiert wurde.
-
Der Autorisierungsserver überprüft das Token und gibt die Ressource zurück: Wenn die Drittanbieteranwendung das Zugriffstoken dem Autorisierungsserver vorlegt, der Ihre Informationen speichert, überprüft der Autorisierungsserver, ob das Token gültig ist. Wenn es gültig ist, erlaubt er der Drittanbieteranwendung den Zugriff auf die entsprechenden Informationen basierend auf den Berechtigungen des Tokens.
Durch die Verwendung von OAuth wird nicht nur die Sicherheit Ihres Kontos erheblich verbessert, da Sie Ihre Anmeldeinformationen nicht direkt der Drittanbieteranwendung preisgeben müssen, sondern es bietet auch einen flexiblen Autorisierungsmechanismus, der es Ihnen ermöglicht, selbstständig zu entscheiden, welche Anwendungen auf welche Ihrer Informationen zugreifen können, wodurch eine präzise Kontrolle über den Fluss Ihrer persönlichen Informationen erreicht wird.
Die Unterschiede und Verbindungen zwischen OpenID Connect und OAuth
Die Unterschiede und Verbindungen zwischen OpenID Connect und OAuth sind in praktischen Anwendungen besonders deutlich. Angenommen, es gibt eine Online-Tierwebsite namens "Pet Paradise", auf der Kunden Tierbedarf kaufen können, und der Tierladen bietet auch eine Tiergesundheits-Tracking-App an, in der Kunden die Gesundheitsdaten ihres Haustieres, wie Gewicht, Ernährung und Impfstatus, erfassen können.
Anwendung von OpenID Connect in diesem Anwendungsfall:
-
Authentifizierung: Wenn Kunden zum ersten Mal die Website "Pet Paradise" besuchen oder die Tiergesundheits-Tracking-App herunterladen und verwenden, müssen sie sich registrieren und anmelden. Um ein bequemes Anmeldeerlebnis zu bieten, entscheidet sich der Tierladen, OpenID Connect für die Implementierung von Single Sign-On (SSO) zu verwenden.
-
ID-Token: Kunden können ihre Anmeldeinformationen von anderen Diensten, die OpenID Connect unterstützen (wie Social-Media-Konten), verwenden, um sich anzumelden. Sobald die Anmeldung erfolgreich ist, stellt der OpenID Connect-Provider dem Kunden ein ID-Token aus. Dieses Token enthält die Identitätsinformationen des Kunden und ist verschlüsselt und signiert.
-
Dienstübergreifende Authentifizierung: Wenn der Kunde später andere Dienste des Tierladens besucht (z. B. von der Website zur App), kann er das zuvor erhaltene ID-Token direkt zur Authentifizierung verwenden, ohne den Benutzernamen und das Passwort erneut eingeben zu müssen. Dies ermöglicht dem Kunden einen nahtlosen Wechsel zwischen verschiedenen Diensten.
Anwendung von OAuth in diesem Anwendungsfall:
-
Autorisierung von Drittanbieteranwendungen: Angenommen, "Pet Paradise" möchte mit einer Drittanbieteranwendung namens "Pet Diary" zusammenarbeiten und es Kunden ermöglichen, ihre Tierbedarfskaufaufzeichnungen und Tiergesundheitsdaten von "Pet Paradise" mit "Pet Diary" zu synchronisieren.
-
Zugriffstoken: Um diese Funktionalität zu erreichen, wird "Pet Paradise" OAuth verwenden, um der "Pet Diary"-Anwendung den Zugriff auf die Kundendaten zu autorisieren. Nachdem der Kunde der Autorisierung auf der Website von "Pet Paradise" zugestimmt hat, wird ein Zugriffstoken über den OAuth-Fluss generiert, das der "Pet Diary"-Anwendung den Zugriff auf die spezifischen Daten des Kunden bei "Pet Paradise" ermöglicht.
-
Schutz der Benutzerdaten: Durch OAuth werden die Anmeldeinformationen des Kunden (Benutzername und Passwort) nicht direkt der "Pet Diary"-Anwendung preisgegeben, sondern sicher über das Zugriffstoken geteilt. Auf diese Weise kann ein Angreifer, selbst wenn die "Pet Diary"-Anwendung angegriffen wird, die Anmeldeinformationen des Kunden nicht direkt erhalten.
Zusammenfassung
Zusammenfassend lassen sich die Unterschiede und Verbindungen zwischen OAuth und OpenID Connect wie folgt darstellen.
-
Grundlage und Erweiterung:
- OAuth ist ein Autorisierungsrahmen, der es Drittanbieteranwendungen ermöglicht, begrenzte Zugriffsberechtigungen zu erhalten, ohne den Benutzernamen und das Passwort des Benutzers zu verwenden.
- OpenID Connect baut auf der Grundlage von OAuth 2.0 auf und erweitert dessen Funktionalität durch die Hinzufügung einer Authentifizierungsschicht.
-
Tokens und Authentifizierung:
- Bei OAuth liegt der Schwerpunkt auf der Autorisierung, d. h. der Erlaubnis für Anwendungen, auf die Ressourcen des Benutzers zuzugreifen, während OpenID Connect stärker auf die Authentifizierung ausgerichtet ist, d. h. die Bestätigung der Benutzeridentität.
- OpenID Connect führt das Konzept des ID-Tokens ein, das ein JSON Web Token (JWT) ist, das die Identitätsinformationen des Benutzers enthält. Dieses Token beweist nicht nur die Identität des Benutzers, sondern kann auch persönliche Profilinformationen des Benutzers enthalten.
-
Zusammenarbeit:
- Wenn eine Anwendung die Identität des Benutzers überprüfen und auf die Ressourcen des Benutzers zugreifen muss, können OpenID Connect und OAuth zusammenarbeiten.
- Der Benutzer authentifiziert zunächst seine Identität über OpenID Connect und erhält ein ID-Token, dann kann die Anwendung dieses Token und den OAuth-Fluss verwenden, um die Berechtigung zum Zugriff auf die Ressourcen des Benutzers zu erhalten.
Zusammenfassend sind OpenID Connect und OAuth zwei komplementäre Identitätsauthentifizierungs- und Autorisierungsprotokolle, die gemeinsam eine sichere, flexible und benutzerfreundliche Authentifizierungs- und Autorisierungslösung für moderne Web- und Mobile-Anwendungen bieten.