- 1 Abschnitt
- 17 Lektionen
- 1 Hour
- Authentifizierung17
- 1.0Einführung in die Authentifizierung
- 1.1Methoden der Authentifizierung
- 1.2Multi-Factor Authentication (MFA)
- 1.3Moderne Authentifizierungsprotokolle
- 1.4OAuth 2.0
- 1.5OpenID Connect
- 1.6SAML (Security Assertion Markup Language)
- 1.7Kerberos
- 1.8Passwortmanagement
- 1.9Biometrische Authentifizierung
- 1.10Token-basierte Authentifizierung
- 1.11Zertifikatsbasierte Authentifizierung
- 1.12Knowledge-based Authentication (KBA)
- 1.13Authentifizierung in speziellen Umgebungen
- 1.14Sicherheitsaspekte der Authentifizierung
- 1.15Aufgaben
- 1.16Lösungen
OpenID Connect
OpenID Connect ist eine Authentifizierungsschicht, die auf dem OAuth 2.0 Autorisierungsrahmenwerk aufbaut. Es ermöglicht Client-Anwendungen, die Identität eines Benutzers basierend auf der Authentifizierung durch einen Authorization Server zu verifizieren und grundlegende Profildaten über den Benutzer zu erhalten. OpenID Connect wird häufig für Single Sign-On (SSO) Lösungen verwendet.
Hauptkomponenten
- End-User (Benutzer): Die Entität, deren Identität verifiziert werden soll.
- Relying Party (RP): Die Anwendung, die auf die Benutzeridentität zugreift.
- OpenID Provider (OP): Der Server, der das OpenID Connect Protokoll implementiert und ID Tokens ausgibt.
Grundprinzip
OpenID Connect erweitert OAuth 2.0 um eine zusätzliche ID Token Komponente, die die Identität des Benutzers bestätigt. Es integriert die Authentifizierung nahtlos in den OAuth 2.0 Autorisierungsprozess und ermöglicht es, sicher Benutzerprofile zu erhalten.
OpenID Connect Flows
OpenID Connect unterstützt mehrere Flows, ähnlich wie OAuth 2.0. Die zwei häufigsten sind der Authorization Code Flow und der Implicit Flow.
Authorization Code Flow
Dieser Flow wird hauptsächlich von Server-seitigen Anwendungen verwendet, die sicher mit dem Authorization Server kommunizieren können.
Schritte:
Authorization Request: Der Benutzer wird zur Autorisierungsseite des OpenID Providers weitergeleitet.
GET /authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=openid%20profile%20email&state=STATE
2. Authorization Grant: Der Benutzer stimmt dem Zugriff zu und wird zur Anwendung zurückgeleitet, wobei ein Autorisierungscode an die Weiterleitungs-URI angehängt wird.
HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=AUTH_CODE&state=STATE
3. Token Request: Die Anwendung tauscht den Autorisierungscode gegen ein ID Token und ein Access Token ein.
POST /token
Authorization: Basic BASE64(CLIENT_ID:CLIENT_SECRET)
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=AUTH_CODE&redirect_uri=REDIRECT_URI
4. Token Response: Der OpenID Provider gibt ein ID Token, ein Access Token und optional ein Refresh Token zurück.
{
"id_token": "ID_TOKEN",
"access_token": "ACCESS_TOKEN",
"token_type": "bearer",
"expires_in": 3600,
"refresh_token": "REFRESH_TOKEN",
"scope": "openid profile email"
}
Implicit Flow
Dieser Flow wird hauptsächlich von browserbasierten Anwendungen verwendet, bei denen der Client nicht sicher ist.
Schritte:
Authorization Request: Der Benutzer wird zur Autorisierungsseite des OpenID Providers weitergeleitet.
GET /authorize?response_type=id_token%20token&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=openid%20profile%20email&state=STATE&nonce=NONCE
2. Token Response: Der Benutzer stimmt dem Zugriff zu und wird zur Anwendung zurückgeleitet, wobei das ID Token und das Access Token an die Weiterleitungs-URI angehängt werden.
HTTP/1.1 302 Found
Location: https://client.example.com/cb#id_token=ID_TOKEN&access_token=ACCESS_TOKEN&token_type=bearer&expires_in=3600&state=STATE&nonce=NONCE
ID Token
Das ID Token ist ein JSON Web Token (JWT), das Informationen über den Benutzer und die Authentifizierungssitzung enthält. Es ermöglicht dem Client, die Identität des Benutzers zu verifizieren.
Beispiel eines ID Tokens:
{
"iss": "https://openid.example.com",
"sub": "1234567890",
"aud": "CLIENT_ID",
"exp": 1311281970,
"iat": 1311280970,
"auth_time": 1311280969,
"nonce": "n-0S6_WzA2Mj",
"name": "John Doe",
"email": "john.doe@example.com",
"picture": "https://example.com/john.jpg"
}
UserInfo Endpoint
Der UserInfo Endpoint ist eine geschützte API, die zusätzliche Profildaten über den Benutzer liefert. Der Client kann dieses Endpunkt aufrufen, um weitere Informationen zu erhalten.
Beispiel einer UserInfo Anfrage:
GET /userinfo
Authorization: Bearer ACCESS_TOKEN
Beispiel einer UserInfo Antwort:
{
"sub": "1234567890",
"name": "John Doe",
"email": "john.doe@example.com",
"picture": "https://example.com/john.jpg"
}
Vorteile von OpenID Connect
- Einfacher und sicherer Zugang: Benutzer können sich mit einem einzigen Satz von Anmeldeinformationen bei mehreren Anwendungen anmelden.
- Integration mit OAuth 2.0: Nahtlose Erweiterung von OAuth 2.0 zur Unterstützung von Authentifizierung.
- Flexibilität: Unterstützt verschiedene Authentifizierungs- und Autorisierungsflüsse.
- Erweiterbare Profildaten: Möglichkeit, erweiterte Profildaten über den Benutzer zu erhalten
