SlideShare a Scribd company logo
1 of 38
Download to read offline
qaware.de
Anwendungsübergreifende
Authentifizierung:
Integrations-Pattern für OpenID
Connect
Christian Fritz
christian.fritz@qaware.de
@chrfritz
QAware | 2
Christian Fritz
Senior Software Engineer
@chrfritz
#cloudnativenerd
#qaware #gernperDude
OAuth 2 ist ein Protokoll für delegierte Autorisierung mit
Web Technologien
QAware | 3
Client
Resource
Owner
Authorization
Server
Resource
Server
5. Access Token
6. Protected Resource
3. Authorization Grant
4. Access Token
1. Authorization Request
2. Authorization Grant
OpenID Connect erweitert OAuth 2 um Authentifizierung
■ Erlaubt die Prüfung der Identität des Anwenders
■ dazu liefert der Token-Endpoint ein weiteres Token: Das ID Token
■ ID Token: JWT, welches grundlegende Informationen über den Anwender
enthält
– Felder im Payload, sog. Claims, im Standard definiert
– u.A. Aussteller, Antragsteller, Subjekt (typ. User ID), Gültigkeit (Service
Endpunkte, Zeitraum)
■ User Info Endpunkt um erweiterte Informationen über den Anwender
abzurufen
QAware | 4
Weitere Features von OIDC
QAware | 5
■ Auffinden aller notwendigen Endpunkte
– Authorize Endpoint
– Token Endpoint
– User Info Endpoint
– JWKS Endpoint
■ JSON Web Key Set Endpunkt um Signatur Keys für JWTs abzufragen
■ Erweiterbar
User Agent
Authorization Code Flow with PKCE
QAware | 6
Resource
Owner
Client
Authorization
Server
Erzeugen eines
Code Verifier
und berechnen
der Code
Challenge
1. Authorization Request + Code Challenge
2. Authorization
3. Authorization Code Grant + Code Challenge
4. Access Token Request + Code Verifier
5. Access Token Grant + Code Verifier
Authorization Code
■ Code welcher beim Token-Endpunkt gegen ein Access Token eingetauscht werden kann
■ Nur einmalig Gültig
Access Token
■ Erlaubt den Zugriff auf Ressourcen welche von einem Resource Server bereit gestellt werden
■ Ersatz für verschiedene andere Authorisierungs-Mechanisem wie Benutzername & Passwort
■ Darf beliebiger String sein solange er folgender Vorgabe entspricht:
1*( ALPHA / DIGIT / "-" / "." / "_" / "~" / "+" / "/" ) *"="
■ Meist kurze Gültigkeit (wenige Minuten)
■ Daher muss kein JWT sein
Token in OAuth 2 und OpenID Connect
QAware | 7
Token in OAuth 2 und OpenID Connect
QAware | 8
Refresh Token
■ Erlaubt ein abgelaufenes Access Token zu erneuern
■ Üblicherweise ein zufälliger String
■ Keine Ausweitung der bisherigen Berechtigungen möglich, weitere Einschränkung schon
■ Sollte nach einmaliger Nutzung ungültig werden
■ Lange Gültigkeit ohne Nutzung (Tage bis Monate)
ID Token
■ Immer ein JWT
■ Beinhaltet immer Aussteller, Subjekt und Gültigkeit (Services & Zeit)
■ Weitere Felder möglich
■ Signiert und kann meist gegen JWKS validiert werden
Die Anwendungslandschaft
QAware | 9
JSF Monolith
Vertrags-
daten
Single Page App
Legacy VB.Net
Client
Kunden-
daten
Kundendaten
Service
Vertragsdaten
Service
1
2
4
3
Sachbearbeiter
Kunde
Static & Server Side Rendered UI
Proxy vor der Anwendung
QAware | 11
OAuth 2 Proxy Anwendung
■ Führt den jeweiligen OAuth2 Flow (z.B. Authorization Code) durch
■ Identifiziert den Client durch Cookies
– Alternativ falls erlaubt, auch per JWT
■ Leitet ggf. User Informationen an die Anwendung weiter
OIDC Provider
Proxy vor der Anwendung - Alternative
QAware | 12
Standard Reverse
Proxy (z.B. Nginx)
Anwendung
OAuth 2 Proxy
Authorization
Request
Response 202
oder 401
■ Wird vom Reverse Proxy mit allen vom
Client gesendeten Headern angefragt
■ Gibt entweder 202 Accepted oder 401
Unauthorized zurück
OIDC Provider
Nachteile:
Proxy vor der Anwendung
QAware | 13
Vorteile:
■ Einfach
■ Keine bis wenige Änderungen an der
Anwendung notwendig
■ Oft kompatibel zu bestehenden Systemen
■ Kann Zentral gemanaged werden
■ mind. ein zusätzlicher Hop (erhöht die Latenz)
■ Weitergabe von Nutzerinformationen
problematisch
■ (noch) keine Standard-Header um
Nutzerdaten an Anwendung weiterzuleiten
■ Keine End2End Verschlüsselung zwischen
Client und Anwendung
Proxy vor der Anwendung - Sicherheitsaspekte
QAware | 14
■ Schutz der Header mit Nutzerinformationen
– Müssen vom OAuth 2 Proxy gesetzt/gelöscht werden
OAuth 2 Proxy Anwendung
��
■ Die Anwendung darf nur über den Proxy erreichbar sein. (z.B. per Sidecar
Deployment)
OIDC direkt in die Anwendung integrieren
QAware | 15
Anwendung
■ Anwendung implementiert den Authorization Code Flow selbst
■ Nutzer wird per Session-Cookie identifiziert
■ Alternativ per Access-Token (JWT oder Opaque mit Introspection)
■ Oft per Konfiguration im Anwendungsframework aktivierbar (z.B. in Spring Boot)
OIDC Provider
Nachteile:
Vorteile:
OIDC direkt in die Anwendung integrieren
QAware | 16
■ Weniger Hops und damit Latenz
■ Einfacher Zugriff auf Nutzerinformationen
■ End2End Verschlüsselung zwischen Client und
Anwendung möglich
■ Fertige Bibliotheken für die Implementierung
der Flows
■ Unterstützung weiterer Authentifizierungen
(z.B. Client-Zertifikate) möglich
■ Potentiell umfangreiche Anpassungen in der
Anwendung
■ Höherer Implementierungsaufwand
■ Potentiell unbekannte Sicherheitsrisiken durch
eigene Implementierung
Single Page Applications
Single Page Application mit Backend
QAware | 18
Backend for
Frontend
OIDC Provider
(Authorization & Token Endpoint)
Browser mit SPA
■ Wie zuvor bei der direkten Integration von OIDC in die Anwendung
■ Backend Anwendung implementiert den Authorization Code Flow selbst
■ Nutzer wird per Session-Cookie identifiziert
■ Alternativ per Access-Token (JWT oder Opaque mit Introspection) (für REST
Services)
■ Oft per Konfiguration im Anwendungsframework aktivierbar (z.B. in Spring
Boot)
Anwendung /
Andere Backends
Vorteile:
OIDC direkt in die Anwendung integrieren - Vorteile
QAware | 19
■ Einfacher Zugriff auf Nutzerinformationen
innerhalb der Anwendung
■ End2End Verschlüsselung zwischen Client und
Anwendung möglich
■ Fertige Bibliotheken für die Implementierung
der Flows
■ Unterstützung weiterer Authentifizierungen
(z.B. Client-Zertifikate) möglich
■ Kein Token Handling in der SPA notwendig
■ Höheres Sicherheitsniveau des OIDC Clients
→ Je nach Information Security Lage, zugriff
auf sensiblere Nutzerinformationen möglich
■ Backend-for-Frontend möglich
Nachteile:
OIDC direkt in die Anwendung integrieren - Nachteile
QAware | 20
■ Potentiell umfangreiche Anpassungen in der
Anwendung
■ Höherer Implementierungsaufwand
■ Potentiell unbekannte Sicherheitsrisiken durch
eigene Implementierung
■ SPA und Backend eng gekoppelt
■ Same Origin von SPA und Backend notwendig
■ Login & Session-Timeout erfordern Browser
Redirect und Neuladen der Seite
Single Page Application ohne Backend
QAware | 21
Resource Server
OIDC Provider
Browser mit SPA
Resource Server
■ SPA führt Authorization Code Flow with PKCE durch
■ Resource Server erwarten nur Access-Token und ggf. ID Token
Nachteile:
Vorteile:
Single Page Application ohne Backend
QAware | 22
■ Lose Koppelung zwischen Frontend und
Backends
■ WebComponents mit verschiedenen
Backends möglich
■ Flow und Token Handling in der SPA
notwendig
– Authorization Code Flow with PKCE
notwendig
– Token Refresh muss in der SPA
regelmäßig durchgeführt werden
■ Niedrigeres Sicherheitsniveau des Clients
→ möglicherweise kein Zugriff auf sensible
Nutzerdaten (Regulatorik)
■ Cross-Origin Resource Sharing (CORS)
Fat Clients & Mobile Applications
Fat Client & Mobile Applications - Authorization Code Flow
with PKCE
QAware | 24
Resource Server
Browser
OIDC Provider -
Authorize Endpoint
Fat Client
/
Mobile Application
Callback
Behandlung
OIDC Provider -
Token Endpoint
Fat Clients & Mobile Applications - Callback Varianten
QAware | 25
Lokaler Webserver:
■ OS Unabhängig
■ Relativ einfach
■ Ports müssen vorab definiert werden
■ Ports können belegt sein
■ Firewall Probleme möglich für Dienste auf Localhost; Port > 1024
Fat Clients & Mobile Applications - Callback Varianten
QAware | 26
Private use URI Scheme
com.example.app:/oauth2redirect/example-provider
■ OS Abhängig
■ Muss im Betriebssystem registriert werden
■ Müssen eindeutig für jede Anwendung sein
■ Kein lokaler Webserver notwendig
■ Startet möglicherweise die Anwendung ein zweites mal
Fat Clients & Mobile Applications - Callback Varianten
QAware | 27
Registrierte HTTPS Redirection
https://app.example.com/oauth2redirect/example-provider
■ OS Abhängig
■ Muss im Betriebssystem registriert werden
■ Identität des Clients wird durch das Betriebssystem garantiert
■ Müssen eindeutig für jede Anwendung sein
■ Kein lokaler Webserver notwendig
■ Startet möglicherweise die Anwendung ein zweites mal
Demo Time
Outgoing Backend Requests
Besonders geschützte Backends
QAware | 30
JSF Monolith
Vertrags-
daten
Single Page App
Legacy VB.Net
Client
Kunden-
daten
Kundendaten
Service
Vertragsdaten
Service
1
2
4
3
Kunde
Sachbearbeiter
Besonders geschützte Backends
QAware | 31
Single Page App
Legacy VB.Net
Client
Kunden-
daten
Kundendaten
Service
Vertragsdaten
Service
Kunde
Sachbearbeiter
��🏽💻
��
��
��
��🏽💻
��
Besonders geschützte Backends
QAware | 32
Single Page App
Legacy VB.Net
Client
Kunden-
daten
Kundendaten
Service
Vertragsdaten
Service
Kunde
Sachbearbeiter
��🏽💻
��
��
��
��
��
Besonders geschützte Backends
QAware | 33
Single Page App
Legacy VB.Net
Client
Kunden-
daten
Kundendaten
Service
Vertragsdaten
Service
Kunde
Sachbearbeiter
��🏽💻
��
��
��🏽💻
��🏽💻
��
Token-Exchange im Detail
QAware | 34
(Start) Resource
Server
OIDC Provider
(Authorization & Token Endpoint)
Browser mit SPA
■ Start Resource Server muss sich eigenes Token per Client Credentials Flow holen
■ Start Resource Server tauscht erhaltens Token zusammen mit eigenem Token gegen
ein neues kombiniertes Token
■ Kombiniertes Token dient dann zum Zugriff auf Ziel Resource Server
(Ziel) Resource
Server
AuthCode Flow with
PKCE
Token-Exchange Flow
Token-Exchange
Request (Auszug):
■ Grant Type:
urn:ietf:params:oauth:grant-type:token-
exchange
■ Subject Token
– Pflicht
– Token des Nutzers im Namen dessen der
Request durchgeführt wird
■ Actor Token
– Optional
– Token des Services welcher den Request
tatsächlich durchführt
QAware | 35
{
"aud":"https://service26.example.com",
"iss":"https://issuer.example.com",
"exp":1443904100,
"nbf":1443904000,
"sub":"user@example.com",
"act":
{
"sub":"https://service16.example.com",
"act":
{
"sub":"https://service77.example.com"
}
}
}
Claims im Kombinierten Token :
Nachteile:
Vorteile:
Token-Exchange
QAware | 36
■ Hohes Sicherheitsniveau
■ Vermeidet Confused Deputy Problem
■ Resource-Server kann genauere
Autorisierung anhand Person und beteiligter
Services durchführen
■ Tokentausch erhöht Latenz der gesamten
Aufrufkette
■ Aufwand der Implementierung
■ Caching sensibler Daten notwendig &
gleichzeitig nicht immer erlaubt
■ Neuer Grant Type am Token-Endpunkt noch
nicht bei jedem OIDC Provider verfügbar
Links
QAware | 37
■ RFC 6749 The OAuth 2.0 Authorization Framework
■ OpenID Connect Core 1.0
■ RFC 6750 OAuth 2.0 Authorization Framework: Bearer Token Usage
■ draft-ietf-oauth-browser-based-apps OAuth 2.0 for Browser-Based Apps
■ RFC 8252 OAuth 2.0 for Native Apps
■ RFC 8693 OAuth 2.0 Token Exchange
■ draft-ietf-oauth-security-topics-19 OAuth 2.0 Security Best Current Practice
Q&A

More Related Content

What's hot

Kubernetes & Google Kubernetes Engine (GKE)
Kubernetes & Google Kubernetes Engine (GKE)Kubernetes & Google Kubernetes Engine (GKE)
Kubernetes & Google Kubernetes Engine (GKE)Akash Agrawal
 
Navigating Disaster Recovery in Kubernetes and CNCF Crossplane
Navigating Disaster Recovery in Kubernetes and CNCF Crossplane Navigating Disaster Recovery in Kubernetes and CNCF Crossplane
Navigating Disaster Recovery in Kubernetes and CNCF Crossplane Carlos Santana
 
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's NextKubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's NextDaniel Bryant
 
KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)
KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)
KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)Channy Yun
 
Crossplane @ Mastering GitOps.pdf
Crossplane @ Mastering GitOps.pdfCrossplane @ Mastering GitOps.pdf
Crossplane @ Mastering GitOps.pdfQAware GmbH
 
ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API GatewaysITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API GatewaysDaniel Bryant
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...QAware GmbH
 
Prometheus
PrometheusPrometheus
Prometheuswyukawa
 
ROSIK Stammtisch „Clean Architecture“
ROSIK Stammtisch „Clean Architecture“ROSIK Stammtisch „Clean Architecture“
ROSIK Stammtisch „Clean Architecture“QAware GmbH
 
GKE Tip Series how do i choose between gke standard, autopilot and cloud run
GKE Tip Series   how do i choose between gke standard, autopilot and cloud run GKE Tip Series   how do i choose between gke standard, autopilot and cloud run
GKE Tip Series how do i choose between gke standard, autopilot and cloud run Sreenivas Makam
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusGrafana Labs
 
Shift Deployment Security Left with Weave GitOps & Upbound’s Universal Crossp...
Shift Deployment Security Left with Weave GitOps & Upbound’s Universal Crossp...Shift Deployment Security Left with Weave GitOps & Upbound’s Universal Crossp...
Shift Deployment Security Left with Weave GitOps & Upbound’s Universal Crossp...Weaveworks
 
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...Daniel Oh
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?Weaveworks
 
Flux is incubating + the road ahead
Flux is incubating + the road aheadFlux is incubating + the road ahead
Flux is incubating + the road aheadLibbySchulze
 
MeetUp Monitoring with Prometheus and Grafana (September 2018)
MeetUp Monitoring with Prometheus and Grafana (September 2018)MeetUp Monitoring with Prometheus and Grafana (September 2018)
MeetUp Monitoring with Prometheus and Grafana (September 2018)Lucas Jellema
 
Building CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and KubernetesBuilding CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and KubernetesJanakiram MSV
 
Open shift 4 infra deep dive
Open shift 4    infra deep diveOpen shift 4    infra deep dive
Open shift 4 infra deep diveWinton Winton
 

What's hot (20)

Kubernetes & Google Kubernetes Engine (GKE)
Kubernetes & Google Kubernetes Engine (GKE)Kubernetes & Google Kubernetes Engine (GKE)
Kubernetes & Google Kubernetes Engine (GKE)
 
Navigating Disaster Recovery in Kubernetes and CNCF Crossplane
Navigating Disaster Recovery in Kubernetes and CNCF Crossplane Navigating Disaster Recovery in Kubernetes and CNCF Crossplane
Navigating Disaster Recovery in Kubernetes and CNCF Crossplane
 
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's NextKubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
 
KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)
KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)
KubeMonkey를 통한 Chaos Engineering 실전 운영하기 - 윤석찬 (AWS 테크에반젤리스트)
 
Crossplane @ Mastering GitOps.pdf
Crossplane @ Mastering GitOps.pdfCrossplane @ Mastering GitOps.pdf
Crossplane @ Mastering GitOps.pdf
 
ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API GatewaysITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
 
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...
 
Prometheus
PrometheusPrometheus
Prometheus
 
Prometheus + Grafana = Awesome Monitoring
Prometheus + Grafana = Awesome MonitoringPrometheus + Grafana = Awesome Monitoring
Prometheus + Grafana = Awesome Monitoring
 
ROSIK Stammtisch „Clean Architecture“
ROSIK Stammtisch „Clean Architecture“ROSIK Stammtisch „Clean Architecture“
ROSIK Stammtisch „Clean Architecture“
 
GKE Tip Series how do i choose between gke standard, autopilot and cloud run
GKE Tip Series   how do i choose between gke standard, autopilot and cloud run GKE Tip Series   how do i choose between gke standard, autopilot and cloud run
GKE Tip Series how do i choose between gke standard, autopilot and cloud run
 
Prometheus Storage
Prometheus StoragePrometheus Storage
Prometheus Storage
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with Prometheus
 
Shift Deployment Security Left with Weave GitOps & Upbound’s Universal Crossp...
Shift Deployment Security Left with Weave GitOps & Upbound’s Universal Crossp...Shift Deployment Security Left with Weave GitOps & Upbound’s Universal Crossp...
Shift Deployment Security Left with Weave GitOps & Upbound’s Universal Crossp...
 
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
Microservice 4.0 Journey - From Spring NetFlix OSS to Istio Service Mesh and ...
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?
 
Flux is incubating + the road ahead
Flux is incubating + the road aheadFlux is incubating + the road ahead
Flux is incubating + the road ahead
 
MeetUp Monitoring with Prometheus and Grafana (September 2018)
MeetUp Monitoring with Prometheus and Grafana (September 2018)MeetUp Monitoring with Prometheus and Grafana (September 2018)
MeetUp Monitoring with Prometheus and Grafana (September 2018)
 
Building CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and KubernetesBuilding CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and Kubernetes
 
Open shift 4 infra deep dive
Open shift 4    infra deep diveOpen shift 4    infra deep dive
Open shift 4 infra deep dive
 

Similar to Anwendungsübergreifende Authentifizierung: Integrations-Pattern für OpenID Connect

Anwendungsübergreifende Authentifizierung: Integrations-Pattern für OpenID Co...
Anwendungsübergreifende Authentifizierung: Integrations-Pattern für OpenID Co...Anwendungsübergreifende Authentifizierung: Integrations-Pattern für OpenID Co...
Anwendungsübergreifende Authentifizierung: Integrations-Pattern für OpenID Co...QAware GmbH
 
Integrations-Pattern für OpenID Connect
Integrations-Pattern für OpenID ConnectIntegrations-Pattern für OpenID Connect
Integrations-Pattern für OpenID ConnectQAware GmbH
 
Security Lab: OIDC in der Praxis
Security Lab: OIDC in der PraxisSecurity Lab: OIDC in der Praxis
Security Lab: OIDC in der PraxisQAware GmbH
 
Sichere Backend-Calls mit Nutzerkontext
Sichere Backend-Calls mit NutzerkontextSichere Backend-Calls mit Nutzerkontext
Sichere Backend-Calls mit NutzerkontextQAware GmbH
 
DACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdfDACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdfDNUG e.V.
 
DACHNUG50 Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Domino REST API - Konzepte und Hintergruende.pdfDACHNUG50 Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Domino REST API - Konzepte und Hintergruende.pdfDNUG e.V.
 
OAuth 2.0 und OpenId Connect
OAuth 2.0 und OpenId ConnectOAuth 2.0 und OpenId Connect
OAuth 2.0 und OpenId ConnectManfred Steyer
 
Wieviel client braucht das web
Wieviel client braucht das webWieviel client braucht das web
Wieviel client braucht das webgedoplan
 
Citrix Day 2013: Citirx Networking
Citrix Day 2013: Citirx NetworkingCitrix Day 2013: Citirx Networking
Citrix Day 2013: Citirx NetworkingDigicomp Academy AG
 
Banking portal
Banking portalBanking portal
Banking portalJoeyNbg
 
Wolfgang Mader (Huemer Data Center)
Wolfgang Mader (Huemer Data Center)Wolfgang Mader (Huemer Data Center)
Wolfgang Mader (Huemer Data Center)Agenda Europe 2035
 
Policy Driven Microservices mit Open Policy Agent
Policy Driven Microservices mit Open Policy AgentPolicy Driven Microservices mit Open Policy Agent
Policy Driven Microservices mit Open Policy AgentQAware GmbH
 
Einfache Migration von 3rd Party-Lizenzierungs-Systemen
Einfache Migration von 3rd Party-Lizenzierungs-SystemenEinfache Migration von 3rd Party-Lizenzierungs-Systemen
Einfache Migration von 3rd Party-Lizenzierungs-Systementeam-WIBU
 
Wieviel Client braucht das Web?
Wieviel Client braucht das Web?Wieviel Client braucht das Web?
Wieviel Client braucht das Web?gedoplan
 
DOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pubDOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pubLoopback.ORG
 
Wie viel Client braucht das Web?JSF, Vaadin und AngularJS im Vergleich
Wie viel Client braucht das Web?JSF, Vaadin und AngularJS im VergleichWie viel Client braucht das Web?JSF, Vaadin und AngularJS im Vergleich
Wie viel Client braucht das Web?JSF, Vaadin und AngularJS im Vergleichgedoplan
 

Similar to Anwendungsübergreifende Authentifizierung: Integrations-Pattern für OpenID Connect (20)

Anwendungsübergreifende Authentifizierung: Integrations-Pattern für OpenID Co...
Anwendungsübergreifende Authentifizierung: Integrations-Pattern für OpenID Co...Anwendungsübergreifende Authentifizierung: Integrations-Pattern für OpenID Co...
Anwendungsübergreifende Authentifizierung: Integrations-Pattern für OpenID Co...
 
Integrations-Pattern für OpenID Connect
Integrations-Pattern für OpenID ConnectIntegrations-Pattern für OpenID Connect
Integrations-Pattern für OpenID Connect
 
Security Lab: OIDC in der Praxis
Security Lab: OIDC in der PraxisSecurity Lab: OIDC in der Praxis
Security Lab: OIDC in der Praxis
 
SharePoint Claims und FBA
SharePoint Claims und FBASharePoint Claims und FBA
SharePoint Claims und FBA
 
Sichere Backend-Calls mit Nutzerkontext
Sichere Backend-Calls mit NutzerkontextSichere Backend-Calls mit Nutzerkontext
Sichere Backend-Calls mit Nutzerkontext
 
DACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdfDACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdf
 
DACHNUG50 Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Domino REST API - Konzepte und Hintergruende.pdfDACHNUG50 Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Domino REST API - Konzepte und Hintergruende.pdf
 
OAuth 2.0 und OpenId Connect
OAuth 2.0 und OpenId ConnectOAuth 2.0 und OpenId Connect
OAuth 2.0 und OpenId Connect
 
Wieviel client braucht das web
Wieviel client braucht das webWieviel client braucht das web
Wieviel client braucht das web
 
Citrix Day 2013: Citirx Networking
Citrix Day 2013: Citirx NetworkingCitrix Day 2013: Citirx Networking
Citrix Day 2013: Citirx Networking
 
Banking portal
Banking portalBanking portal
Banking portal
 
Wolfgang Mader (Huemer Data Center)
Wolfgang Mader (Huemer Data Center)Wolfgang Mader (Huemer Data Center)
Wolfgang Mader (Huemer Data Center)
 
Policy Driven Microservices mit Open Policy Agent
Policy Driven Microservices mit Open Policy AgentPolicy Driven Microservices mit Open Policy Agent
Policy Driven Microservices mit Open Policy Agent
 
ASP.NET Core Security
ASP.NET Core SecurityASP.NET Core Security
ASP.NET Core Security
 
Einfache Migration von 3rd Party-Lizenzierungs-Systemen
Einfache Migration von 3rd Party-Lizenzierungs-SystemenEinfache Migration von 3rd Party-Lizenzierungs-Systemen
Einfache Migration von 3rd Party-Lizenzierungs-Systemen
 
Wieviel Client braucht das Web?
Wieviel Client braucht das Web?Wieviel Client braucht das Web?
Wieviel Client braucht das Web?
 
Cloud – Intune
Cloud – IntuneCloud – Intune
Cloud – Intune
 
DOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pubDOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pub
 
GWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der Praxis
 
Wie viel Client braucht das Web?JSF, Vaadin und AngularJS im Vergleich
Wie viel Client braucht das Web?JSF, Vaadin und AngularJS im VergleichWie viel Client braucht das Web?JSF, Vaadin und AngularJS im Vergleich
Wie viel Client braucht das Web?JSF, Vaadin und AngularJS im Vergleich
 

More from QAware GmbH

50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdf50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdfQAware GmbH
 
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...QAware GmbH
 
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN MainzFully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN MainzQAware GmbH
 
Down the Ivory Tower towards Agile Architecture
Down the Ivory Tower towards Agile ArchitectureDown the Ivory Tower towards Agile Architecture
Down the Ivory Tower towards Agile ArchitectureQAware GmbH
 
"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!QAware GmbH
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringQAware GmbH
 
Der Tod der Testpyramide? – Frontend-Testing mit Playwright
Der Tod der Testpyramide? – Frontend-Testing mit PlaywrightDer Tod der Testpyramide? – Frontend-Testing mit Playwright
Der Tod der Testpyramide? – Frontend-Testing mit PlaywrightQAware GmbH
 
Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAsQAware GmbH
 
Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo QAware GmbH
 
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
 Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See... Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...QAware GmbH
 
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster QAware GmbH
 
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.QAware GmbH
 
Kubernetes with Cilium in AWS - Experience Report!
Kubernetes with Cilium in AWS - Experience Report!Kubernetes with Cilium in AWS - Experience Report!
Kubernetes with Cilium in AWS - Experience Report!QAware GmbH
 
50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling50 Shades of K8s Autoscaling
50 Shades of K8s AutoscalingQAware GmbH
 
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAPKontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAPQAware GmbH
 
Service Mesh Pain & Gain. Experiences from a client project.
Service Mesh Pain & Gain. Experiences from a client project.Service Mesh Pain & Gain. Experiences from a client project.
Service Mesh Pain & Gain. Experiences from a client project.QAware GmbH
 
50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling50 Shades of K8s Autoscaling
50 Shades of K8s AutoscalingQAware GmbH
 
Blue turns green! Approaches and technologies for sustainable K8s clusters.
Blue turns green! Approaches and technologies for sustainable K8s clusters.Blue turns green! Approaches and technologies for sustainable K8s clusters.
Blue turns green! Approaches and technologies for sustainable K8s clusters.QAware GmbH
 
Per Anhalter zu Cloud Nativen API Gateways
Per Anhalter zu Cloud Nativen API GatewaysPer Anhalter zu Cloud Nativen API Gateways
Per Anhalter zu Cloud Nativen API GatewaysQAware GmbH
 
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster QAware GmbH
 

More from QAware GmbH (20)

50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdf50 Shades of K8s Autoscaling #JavaLand24.pdf
50 Shades of K8s Autoscaling #JavaLand24.pdf
 
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
Make Agile Great - PM-Erfahrungen aus zwei virtuellen internationalen SAFe-Pr...
 
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN MainzFully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
Fully-managed Cloud-native Databases: The path to indefinite scale @ CNN Mainz
 
Down the Ivory Tower towards Agile Architecture
Down the Ivory Tower towards Agile ArchitectureDown the Ivory Tower towards Agile Architecture
Down the Ivory Tower towards Agile Architecture
 
"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!"Mixed" Scrum-Teams – Die richtige Mischung macht's!
"Mixed" Scrum-Teams – Die richtige Mischung macht's!
 
Make Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform EngineeringMake Developers Fly: Principles for Platform Engineering
Make Developers Fly: Principles for Platform Engineering
 
Der Tod der Testpyramide? – Frontend-Testing mit Playwright
Der Tod der Testpyramide? – Frontend-Testing mit PlaywrightDer Tod der Testpyramide? – Frontend-Testing mit Playwright
Der Tod der Testpyramide? – Frontend-Testing mit Playwright
 
Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAs
 
Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo Cloud Migration mit KI: der Turbo
Cloud Migration mit KI: der Turbo
 
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
 Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See... Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
Migration von stark regulierten Anwendungen in die Cloud: Dem Teufel die See...
 
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
 
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
Endlich gute API Tests. Boldly Testing APIs Where No One Has Tested Before.
 
Kubernetes with Cilium in AWS - Experience Report!
Kubernetes with Cilium in AWS - Experience Report!Kubernetes with Cilium in AWS - Experience Report!
Kubernetes with Cilium in AWS - Experience Report!
 
50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling
 
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAPKontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
Kontinuierliche Sicherheitstests für APIs mit Testkube und OWASP ZAP
 
Service Mesh Pain & Gain. Experiences from a client project.
Service Mesh Pain & Gain. Experiences from a client project.Service Mesh Pain & Gain. Experiences from a client project.
Service Mesh Pain & Gain. Experiences from a client project.
 
50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling50 Shades of K8s Autoscaling
50 Shades of K8s Autoscaling
 
Blue turns green! Approaches and technologies for sustainable K8s clusters.
Blue turns green! Approaches and technologies for sustainable K8s clusters.Blue turns green! Approaches and technologies for sustainable K8s clusters.
Blue turns green! Approaches and technologies for sustainable K8s clusters.
 
Per Anhalter zu Cloud Nativen API Gateways
Per Anhalter zu Cloud Nativen API GatewaysPer Anhalter zu Cloud Nativen API Gateways
Per Anhalter zu Cloud Nativen API Gateways
 
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
Aus blau wird grün! Ansätze und Technologien für nachhaltige Kubernetes-Cluster
 

Anwendungsübergreifende Authentifizierung: Integrations-Pattern für OpenID Connect

  • 2. QAware | 2 Christian Fritz Senior Software Engineer @chrfritz #cloudnativenerd #qaware #gernperDude
  • 3. OAuth 2 ist ein Protokoll für delegierte Autorisierung mit Web Technologien QAware | 3 Client Resource Owner Authorization Server Resource Server 5. Access Token 6. Protected Resource 3. Authorization Grant 4. Access Token 1. Authorization Request 2. Authorization Grant
  • 4. OpenID Connect erweitert OAuth 2 um Authentifizierung ■ Erlaubt die Prüfung der Identität des Anwenders ■ dazu liefert der Token-Endpoint ein weiteres Token: Das ID Token ■ ID Token: JWT, welches grundlegende Informationen über den Anwender enthält – Felder im Payload, sog. Claims, im Standard definiert – u.A. Aussteller, Antragsteller, Subjekt (typ. User ID), Gültigkeit (Service Endpunkte, Zeitraum) ■ User Info Endpunkt um erweiterte Informationen über den Anwender abzurufen QAware | 4
  • 5. Weitere Features von OIDC QAware | 5 ■ Auffinden aller notwendigen Endpunkte – Authorize Endpoint – Token Endpoint – User Info Endpoint – JWKS Endpoint ■ JSON Web Key Set Endpunkt um Signatur Keys für JWTs abzufragen ■ Erweiterbar
  • 6. User Agent Authorization Code Flow with PKCE QAware | 6 Resource Owner Client Authorization Server Erzeugen eines Code Verifier und berechnen der Code Challenge 1. Authorization Request + Code Challenge 2. Authorization 3. Authorization Code Grant + Code Challenge 4. Access Token Request + Code Verifier 5. Access Token Grant + Code Verifier
  • 7. Authorization Code ■ Code welcher beim Token-Endpunkt gegen ein Access Token eingetauscht werden kann ■ Nur einmalig Gültig Access Token ■ Erlaubt den Zugriff auf Ressourcen welche von einem Resource Server bereit gestellt werden ■ Ersatz für verschiedene andere Authorisierungs-Mechanisem wie Benutzername & Passwort ■ Darf beliebiger String sein solange er folgender Vorgabe entspricht: 1*( ALPHA / DIGIT / "-" / "." / "_" / "~" / "+" / "/" ) *"=" ■ Meist kurze Gültigkeit (wenige Minuten) ■ Daher muss kein JWT sein Token in OAuth 2 und OpenID Connect QAware | 7
  • 8. Token in OAuth 2 und OpenID Connect QAware | 8 Refresh Token ■ Erlaubt ein abgelaufenes Access Token zu erneuern ■ Üblicherweise ein zufälliger String ■ Keine Ausweitung der bisherigen Berechtigungen möglich, weitere Einschränkung schon ■ Sollte nach einmaliger Nutzung ungültig werden ■ Lange Gültigkeit ohne Nutzung (Tage bis Monate) ID Token ■ Immer ein JWT ■ Beinhaltet immer Aussteller, Subjekt und Gültigkeit (Services & Zeit) ■ Weitere Felder möglich ■ Signiert und kann meist gegen JWKS validiert werden
  • 9. Die Anwendungslandschaft QAware | 9 JSF Monolith Vertrags- daten Single Page App Legacy VB.Net Client Kunden- daten Kundendaten Service Vertragsdaten Service 1 2 4 3 Sachbearbeiter Kunde
  • 10. Static & Server Side Rendered UI
  • 11. Proxy vor der Anwendung QAware | 11 OAuth 2 Proxy Anwendung ■ Führt den jeweiligen OAuth2 Flow (z.B. Authorization Code) durch ■ Identifiziert den Client durch Cookies – Alternativ falls erlaubt, auch per JWT ■ Leitet ggf. User Informationen an die Anwendung weiter OIDC Provider
  • 12. Proxy vor der Anwendung - Alternative QAware | 12 Standard Reverse Proxy (z.B. Nginx) Anwendung OAuth 2 Proxy Authorization Request Response 202 oder 401 ■ Wird vom Reverse Proxy mit allen vom Client gesendeten Headern angefragt ■ Gibt entweder 202 Accepted oder 401 Unauthorized zurück OIDC Provider
  • 13. Nachteile: Proxy vor der Anwendung QAware | 13 Vorteile: ■ Einfach ■ Keine bis wenige Änderungen an der Anwendung notwendig ■ Oft kompatibel zu bestehenden Systemen ■ Kann Zentral gemanaged werden ■ mind. ein zusätzlicher Hop (erhöht die Latenz) ■ Weitergabe von Nutzerinformationen problematisch ■ (noch) keine Standard-Header um Nutzerdaten an Anwendung weiterzuleiten ■ Keine End2End Verschlüsselung zwischen Client und Anwendung
  • 14. Proxy vor der Anwendung - Sicherheitsaspekte QAware | 14 ■ Schutz der Header mit Nutzerinformationen – Müssen vom OAuth 2 Proxy gesetzt/gelöscht werden OAuth 2 Proxy Anwendung �� ■ Die Anwendung darf nur über den Proxy erreichbar sein. (z.B. per Sidecar Deployment)
  • 15. OIDC direkt in die Anwendung integrieren QAware | 15 Anwendung ■ Anwendung implementiert den Authorization Code Flow selbst ■ Nutzer wird per Session-Cookie identifiziert ■ Alternativ per Access-Token (JWT oder Opaque mit Introspection) ■ Oft per Konfiguration im Anwendungsframework aktivierbar (z.B. in Spring Boot) OIDC Provider
  • 16. Nachteile: Vorteile: OIDC direkt in die Anwendung integrieren QAware | 16 ■ Weniger Hops und damit Latenz ■ Einfacher Zugriff auf Nutzerinformationen ■ End2End Verschlüsselung zwischen Client und Anwendung möglich ■ Fertige Bibliotheken für die Implementierung der Flows ■ Unterstützung weiterer Authentifizierungen (z.B. Client-Zertifikate) möglich ■ Potentiell umfangreiche Anpassungen in der Anwendung ■ Höherer Implementierungsaufwand ■ Potentiell unbekannte Sicherheitsrisiken durch eigene Implementierung
  • 18. Single Page Application mit Backend QAware | 18 Backend for Frontend OIDC Provider (Authorization & Token Endpoint) Browser mit SPA ■ Wie zuvor bei der direkten Integration von OIDC in die Anwendung ■ Backend Anwendung implementiert den Authorization Code Flow selbst ■ Nutzer wird per Session-Cookie identifiziert ■ Alternativ per Access-Token (JWT oder Opaque mit Introspection) (für REST Services) ■ Oft per Konfiguration im Anwendungsframework aktivierbar (z.B. in Spring Boot) Anwendung / Andere Backends
  • 19. Vorteile: OIDC direkt in die Anwendung integrieren - Vorteile QAware | 19 ■ Einfacher Zugriff auf Nutzerinformationen innerhalb der Anwendung ■ End2End Verschlüsselung zwischen Client und Anwendung möglich ■ Fertige Bibliotheken für die Implementierung der Flows ■ Unterstützung weiterer Authentifizierungen (z.B. Client-Zertifikate) möglich ■ Kein Token Handling in der SPA notwendig ■ Höheres Sicherheitsniveau des OIDC Clients → Je nach Information Security Lage, zugriff auf sensiblere Nutzerinformationen möglich ■ Backend-for-Frontend möglich
  • 20. Nachteile: OIDC direkt in die Anwendung integrieren - Nachteile QAware | 20 ■ Potentiell umfangreiche Anpassungen in der Anwendung ■ Höherer Implementierungsaufwand ■ Potentiell unbekannte Sicherheitsrisiken durch eigene Implementierung ■ SPA und Backend eng gekoppelt ■ Same Origin von SPA und Backend notwendig ■ Login & Session-Timeout erfordern Browser Redirect und Neuladen der Seite
  • 21. Single Page Application ohne Backend QAware | 21 Resource Server OIDC Provider Browser mit SPA Resource Server ■ SPA führt Authorization Code Flow with PKCE durch ■ Resource Server erwarten nur Access-Token und ggf. ID Token
  • 22. Nachteile: Vorteile: Single Page Application ohne Backend QAware | 22 ■ Lose Koppelung zwischen Frontend und Backends ■ WebComponents mit verschiedenen Backends möglich ■ Flow und Token Handling in der SPA notwendig – Authorization Code Flow with PKCE notwendig – Token Refresh muss in der SPA regelmäßig durchgeführt werden ■ Niedrigeres Sicherheitsniveau des Clients → möglicherweise kein Zugriff auf sensible Nutzerdaten (Regulatorik) ■ Cross-Origin Resource Sharing (CORS)
  • 23. Fat Clients & Mobile Applications
  • 24. Fat Client & Mobile Applications - Authorization Code Flow with PKCE QAware | 24 Resource Server Browser OIDC Provider - Authorize Endpoint Fat Client / Mobile Application Callback Behandlung OIDC Provider - Token Endpoint
  • 25. Fat Clients & Mobile Applications - Callback Varianten QAware | 25 Lokaler Webserver: ■ OS Unabhängig ■ Relativ einfach ■ Ports müssen vorab definiert werden ■ Ports können belegt sein ■ Firewall Probleme möglich für Dienste auf Localhost; Port > 1024
  • 26. Fat Clients & Mobile Applications - Callback Varianten QAware | 26 Private use URI Scheme com.example.app:/oauth2redirect/example-provider ■ OS Abhängig ■ Muss im Betriebssystem registriert werden ■ Müssen eindeutig für jede Anwendung sein ■ Kein lokaler Webserver notwendig ■ Startet möglicherweise die Anwendung ein zweites mal
  • 27. Fat Clients & Mobile Applications - Callback Varianten QAware | 27 Registrierte HTTPS Redirection https://app.example.com/oauth2redirect/example-provider ■ OS Abhängig ■ Muss im Betriebssystem registriert werden ■ Identität des Clients wird durch das Betriebssystem garantiert ■ Müssen eindeutig für jede Anwendung sein ■ Kein lokaler Webserver notwendig ■ Startet möglicherweise die Anwendung ein zweites mal
  • 30. Besonders geschützte Backends QAware | 30 JSF Monolith Vertrags- daten Single Page App Legacy VB.Net Client Kunden- daten Kundendaten Service Vertragsdaten Service 1 2 4 3 Kunde Sachbearbeiter
  • 31. Besonders geschützte Backends QAware | 31 Single Page App Legacy VB.Net Client Kunden- daten Kundendaten Service Vertragsdaten Service Kunde Sachbearbeiter ��🏽💻 �� �� �� ��🏽💻 ��
  • 32. Besonders geschützte Backends QAware | 32 Single Page App Legacy VB.Net Client Kunden- daten Kundendaten Service Vertragsdaten Service Kunde Sachbearbeiter ��🏽💻 �� �� �� �� ��
  • 33. Besonders geschützte Backends QAware | 33 Single Page App Legacy VB.Net Client Kunden- daten Kundendaten Service Vertragsdaten Service Kunde Sachbearbeiter ��🏽💻 �� �� ��🏽💻 ��🏽💻 ��
  • 34. Token-Exchange im Detail QAware | 34 (Start) Resource Server OIDC Provider (Authorization & Token Endpoint) Browser mit SPA ■ Start Resource Server muss sich eigenes Token per Client Credentials Flow holen ■ Start Resource Server tauscht erhaltens Token zusammen mit eigenem Token gegen ein neues kombiniertes Token ■ Kombiniertes Token dient dann zum Zugriff auf Ziel Resource Server (Ziel) Resource Server AuthCode Flow with PKCE Token-Exchange Flow
  • 35. Token-Exchange Request (Auszug): ■ Grant Type: urn:ietf:params:oauth:grant-type:token- exchange ■ Subject Token – Pflicht – Token des Nutzers im Namen dessen der Request durchgeführt wird ■ Actor Token – Optional – Token des Services welcher den Request tatsächlich durchführt QAware | 35 { "aud":"https://service26.example.com", "iss":"https://issuer.example.com", "exp":1443904100, "nbf":1443904000, "sub":"user@example.com", "act": { "sub":"https://service16.example.com", "act": { "sub":"https://service77.example.com" } } } Claims im Kombinierten Token :
  • 36. Nachteile: Vorteile: Token-Exchange QAware | 36 ■ Hohes Sicherheitsniveau ■ Vermeidet Confused Deputy Problem ■ Resource-Server kann genauere Autorisierung anhand Person und beteiligter Services durchführen ■ Tokentausch erhöht Latenz der gesamten Aufrufkette ■ Aufwand der Implementierung ■ Caching sensibler Daten notwendig & gleichzeitig nicht immer erlaubt ■ Neuer Grant Type am Token-Endpunkt noch nicht bei jedem OIDC Provider verfügbar
  • 37. Links QAware | 37 ■ RFC 6749 The OAuth 2.0 Authorization Framework ■ OpenID Connect Core 1.0 ■ RFC 6750 OAuth 2.0 Authorization Framework: Bearer Token Usage ■ draft-ietf-oauth-browser-based-apps OAuth 2.0 for Browser-Based Apps ■ RFC 8252 OAuth 2.0 for Native Apps ■ RFC 8693 OAuth 2.0 Token Exchange ■ draft-ietf-oauth-security-topics-19 OAuth 2.0 Security Best Current Practice
  • 38. Q&A