Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Login und Access-Control für SPA

Login und Access-Control für SPA

Session from w-jax 2017 in Munich

Manfred Steyer

November 08, 2017
Tweet

More Decks by Manfred Steyer

Other Decks in Programming

Transcript

  1. Über mich … • Manfred Steyer • SOFTWAREarchitekt.at • Trainer

    & Consultant • Fokus: Angular • Google Developer Expert (GDE) Page ▪ 3 Manfred Steyer
  2. Inhalt • Motivation • OAuth 2 • OpenId Connect •

    Token Refresh • Single Sign out • DEMO mit Angular
  3. Prinzipieller Ablauf Folie▪ 14 Client Authorization-Server Resource-Server 1. Umleitung 2.

    Umleitung mit Access-Token 3. Access-Token Ein zentrales Benutzerkonto Nur Auth-Svr. kennt Passwort Auth. von Client entkoppelt Flexibilität durch Token SPA: Kein Cookie: Kein CSRF
  4. Was ist OAuth ? • Ursprünglich Entwickelt von Twitter und

    Ma.gnolia • Protokoll zum Delegieren von (eingeschränkten) Rechten • Mittlerweile verwendet von Google, Facebook, Flickr, Microsoft, Salesforce.com oder Yahoo! • Verschiedene Flows Folie▪ 16
  5. Implicit Flow für SPA Folie▪ 17 Client Authorization-Server Resource-Server 1.

    Umleitung 2. Umleitung mit Access-Token 3. Access-Token
  6. Token (typische Inhalte) • Informationen über Benutzer (Claims) • Rechte,

    die der Client wahrnehmen darf • Aussteller • Audience (für wen wurde Token ausgestellt) • Gültigkeitsdatum • Signatur des Ausstellers Folie▪ 18
  7. Token-Format • OAuth 2 schreibt kein Token-Format vor • Ressource

    Server muss Token validieren können Folie▪ 19
  8. Token-Formate (Auswahl) • GUID (Referenz-Token) • Eigenes Tokenformat • JWT:

    JSON Web Token • JSON-Dokument beschreibt Claims • Kann signiert und/oder verschlüsselt sein Folie▪ 20
  9. SSO mit OAuth Folie▪ 24 Client Authorization-Server Ressource- Server 3.

    /user/profile + Token 1. Token anfordern { "user_name": "susi", "email": "[email protected]", … } 2. Token &scope=profile Nicht durch OAuth 2.0 definiert
  10. OpenId Connect (OIDC) • Erweiterung zu OAuth 2.0 • Standardisiert

    User-Profil-Endpunkt (Service mit Daten zum Benutzer) • Client erhält auch ID-Token • JWT-Token mit Infos zum Benutzer + Audience • JWT-Token kann vom Aussteller signiert sein Folie▪ 25
  11. Implicit Flow mit OIDC Folie▪ 26 Client Authorization-Server Resource-Server 1.

    Umleitung 2. Umleitung mit Access-Token und Id-Token 3. Access-Token
  12. Refresh Token (1) Folie▪ 31 Client Authorization-Server Resource-Server 1. Umleitung

    2. Umleitung mit Access-Token und Id-Token und Refresh-Token
  13. Refresh Token (2) Folie▪ 32 Client Authorization-Server Resource-Server 3. Refresh-Token

    4. Umleitung mit Access-Token und Id-Token und neuem Refresh-Token
  14. Silent Refresh Folie▪ 35 Client Authorization-Server Resource-Server 1. Umleitung in

    verstecktem iFrame 2. Umleitung mit Access-Token und Id-Token
  15. Kanal zum Client offenhalten? • Websockets • Server Send Events

    • Hidden IFrame • OIDC Session Management
  16. Fazit Token: Flexibilität und Cross Origin OAuth 2: Autorisierung OpenId

    Connect: Authentifizierung Implicit Flow Silent Refresh Single Sign out