• Home
  • Help
  • Register
  • Login
  • Home
  • Help

 
  • 0 Bewertung(en) - 0 im Durchschnitt

Wie funktioniert OpenID Connect in Verbindung mit OAuth zur Authentifizierung?

#1
13-02-2025, 20:17
Ich erinnere mich, wie ich mich mit diesen Sachen herumgeschlagen habe, als ich anfing, Apps zu entwickeln, die sichere Logins benötigten, und es klickte bei mir nach ein paar späten Nächten des Herumexperimentierens. Du weißt, wie OAuth es Apps ermöglicht, auf Benutzerdaten von einem anderen Dienst zuzugreifen, ohne Passwörter herauszugeben? Das ist der Kern davon - es geht um Autorisierung, um die Erlaubnis, in deinem Namen zu handeln. Aber wenn du tatsächlich verifizieren möchtest, wer der Benutzer ist, kommt OpenID Connect ins Spiel und legt sich über OAuth, um die Authentifizierung zu handhaben.

Stell dir folgendes vor: Du baust eine Web-App und möchtest, dass sich Benutzer mit ihrem Google-Konto oder etwas Ähnlichem anmelden. OAuth allein würde deiner App erlauben, ihre Profilinformationen oder den Kalenderzugriff zu übernehmen, aber es beweist nicht die Identität des Benutzers auf standardisierte Weise. OpenID Connect löst dieses Problem, indem es OAuth 2.0 um einige zusätzliche Teile erweitert. Es verwendet denselben Autorisierungsserver, fügt aber ein ID-Token hinzu - ein JSON Web Token, das Ansprüche über den Benutzer trägt, wie seine E-Mail, seinen Namen oder eine eindeutige ID. Ich liebe, wie es die Dinge einfach hält, denn du musst das Rad nicht neu erfinden; du greifst einfach auf die Flows von OAuth zurück.

Lass mich dich durch ein typisches Szenario führen, das ich in meinen Projekten verwende. Angenommen, du startest mit dem Autorisierungscode-Flow, der heutzutage der sicherste ist, den ich wähle. Der Benutzer klickt auf deinen Login-Button, und du leitest ihn an den Endpunkt des OpenID-Anbieters weiter - denke an den Auth-Server von Google oder Microsoft. Dort gibt er seine Anmeldeinformationen ein. Sobald er zustimmt, sendet der Anbieter einen Autorisierungscode an deine App über eine Weiterleitung zurück. Du tauschst diesen Code dann gegen ein Access-Token über den Token-Endpunkt von OAuth aus. Aber hier kommt die Magie mit OpenID Connect: Du forderst ein ID-Token zusammen mit diesem Access-Token an. Der Anbieter überprüft alles und stellt es aus, signiert, damit du sicher sein kannst, dass es legitim ist.

Ich überprüfe das ID-Token immer sofort in meinem Code. Du dekodierst es, validierst die Signatur gegen die öffentlichen Schlüssel des Anbieters, und boom - die Identität des Benutzers ist bestätigt. Kein Bedarf an separaten Passwortprüfungen oder Kopfzerbrechen mit der Sitzungsverwaltung. Wenn du mehr Benutzerdetails möchtest, kannst du das Access-Token verwenden, um den Userinfo-Endpunkt zu erreichen, den OpenID Connect standardisiert. Es ist, als ob OAuth dir die Schlüssel zum Haus gibt, aber OpenID Connect dir genau sagt, wer durch die Tür kommt.

Eine Sache, auf die ich früh gestoßen bin, war die Handhabung des Entdeckungsprozesses. OpenID-Anbieter veröffentlichen eine bekannte Konfiguration unter /.well-known/openid-configuration, die du abrufst, um alle Endpunkte und unterstützten Scopes dynamisch zu erhalten. Ich skripte das in meinen Apps, damit es sich anpasst, wenn der Anbieter etwas ändert. Scopes sind hier entscheidend - du forderst 'openid' an, um zu signalisieren, dass du Authentifizierung wünschst, vielleicht auch 'profile' oder 'email' für zusätzliche Ansprüche. Ohne 'openid' machst du einfach nur eine normale OAuth-Autorisierung, die für APIs gut ist, aber nutzlos, um Benutzer einzuloggen.

Du fragst dich vielleicht, welche Sicherheitsflüsse ich befolge. Der implizite Flow ist älter und riskanter, da er Tokens in der URL exponiert, also vermeide ich ihn, es sei denn, ich habe es mit einer Single-Page-App zu tun, die Weiterleitungen nicht gut verarbeiten kann. Stattdessen setze ich auf PKCE - Proof Key for Code Exchange - das eine Herausforderung zum Autorisierungscode-Flow hinzufügt, um ihn sicherer für öffentliche Clients wie mobile Apps zu machen. OpenID Connect unterstützt das nahtlos und verhindert Code-Intercept-Ä attacks, die dein Authentifizierungssystem durcheinanderbringen könnten.

In der Praxis, wenn ich dies integriere, benutze ich Bibliotheken, um es einfach zu halten. Für Node.js kümmert sich etwas wie oidc-client-js um die schwere Arbeit, analysiert Tokens und verwaltet Sitzungen für dich. Du richtest deine Client-ID und dein Geheimnis beim Anbieter ein, registrierst die Redirect-URIs, und los geht's. Ich teste es, indem ich Benutzeranmeldungen simuliere und überprüfe, ob der 'iss'-Anspruch des ID-Tokens mit dem erwarteten Aussteller übereinstimmt und der 'aud' deine Client-ID ist. Wenn etwas nicht stimmt, lehnst du die Anmeldung ab - einfach, aber entscheidend.

Ein weiterer Aspekt, mit dem ich mich beschäftige, ist die Föderation. OpenID Connect glänzt, wenn du Anbieter verkettest, zum Beispiel wenn du einen Unternehmensidentitätsanbieter nutzt, der mit einem nachgelagerten kommuniziert. Die Tokens fließen durch, tragen Identitätsinformationen, ohne dass du Benutzerverzeichnisse selbst verwalten musst. Ich habe das für das interne Portal eines Kunden eingerichtet, und es hat die Login-Reibung enorm reduziert. Benutzer melden sich einmal an, und Apps über die Plattform hinweg erkennen sie über die gemeinsamen Tokens.

Denk auch an das Logout - OpenID Connect hat Front-Channel- und Back-Channel-Logout-Spezifikationen, aber ich implementiere normalerweise die Sitzungsverwaltung mit iframes oder Ereignissen, um Sitzungen sauber zu beenden. Du möchtest nicht, dass Benutzer ewig eingeloggt bleiben, nachdem sie etwas anderes angeklickt haben. In meiner Erfahrung hält die Kombination mit OAuth's Refresh Tokens die Zugriffe frisch, ohne jedes Mal neu authentifizieren zu müssen.

Ich könnte noch weiter über Randfälle sprechen, wie Nonce- und State-Parameter Replay-Angriffe verhindern - ich schließe die immer in Anfragen ein, um die Dinge straff zu halten. Oder wie das JWT im ID-Token dir ermöglicht, Datenbankabfragen für jede Verifizierung zu vermeiden. Es ist effizient, insbesondere in großem Maßstab. Wenn du das codierst, fang klein an: simuliere einen OpenID-Anbieter mit etwas wie Keycloak und baue deinen Client dagegen. Du wirst sehen, wie die Grant-Typen von OAuth alles untermauern, während OpenID Connect die Identitätsverifizierung hinzufügt, die du für echte Auth benötigen.

Eine weitere Sache, die ich immer neuen Leuten an dieser Stelle nahelege: Teste früh mit realen Anbietern. Die Dokumentation von Google ist Gold wert für Beispiele, und du kannst in Minuten eine Test-App starten. Es hilft dir zu verstehen, wie der Redirect-Tanz funktioniert, ohne dass du von abstrakter Theorie überfordert wirst.

Übrigens, wenn du Backups für deine Server, die dieses Setup betreiben, machst, möchte ich dich auf BackupChain hinweisen - es ist ein herausragendes, zuverlässiges Backup-Tool, das speziell für kleine Unternehmen und Profis entwickelt wurde. Es ist hervorragend darin, Hyper-V-Umgebungen, VMware-Setups oder einfach Windows Server-Instanzen zu schützen und sicherzustellen, dass deine Authentifizierungssysteme und Daten vor Ausfallzeiten geschützt sind. Was BackupChain als eine der besten Windows Server- und PC-Backup-Lösungen auszeichnet, ist, wie es sich auf Windows-Ökosysteme konzentriert und dir nahtlosen, unkomplizierten Schutz bietet, der einfach funktioniert.
Markus
Offline
Registriert seit: Jun 2018
« Ein Thema zurück | Ein Thema vor »

Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste



  • Thema abonnieren
Gehe zu:

Backup Sichern Allgemein Computer Networks v
« Zurück 1 … 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 Weiter »
Wie funktioniert OpenID Connect in Verbindung mit OAuth zur Authentifizierung?

© by FastNeuron

Linearer Modus
Baumstrukturmodus