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

Moderne Security-Lösungen mit Angular, OAuth 2 und OpenID Connect

Moderne Security-Lösungen mit Angular, OAuth 2 und OpenID Connect

Manfred Steyer

June 01, 2017
Tweet

More Decks by Manfred Steyer

Other Decks in Programming

Transcript

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

    & Consultant • Focus: Angular • Google Developer Expert (GDE) Page ▪ 2 Manfred Steyer
  2. Fragestellungen • Immer Benutzername und Passwort übersenden? • Immer Benutzername

    und Passwort am Server prüfen? • Eigenes Benutzerkonto? • Was, wenn Services mit anderen Services kommunizieren? • Cookies und Angriffsvektoren? • Cookies und verschiedene Domänen? • Besser: Zeitlich beschränktes Token zum Zugriff
  3. Prinzipieller Ablauf Folie▪ 7 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▪ 9
  5. Folie▪ 11 Client Authorization-Server Resource-Server 1. Direkte HTTP-Anfrage mit Credentials

    des Benutzers 2. Antwort mit Access-Token 3. Access-Token Resource Owner Password Credentials Flow
  6. Resource Owner Password Credentials Flow Folie▪ 12 Client Authorization-Server Resource-Server

    1. Direkte HTTP-Anfrage mit Credentials des Benutzers 2. Antwort mit Access-Token 3. Access-Token Voraussetzung: Vertrauensstellung zw. Benutzer und Client
  7. Token (typische Inhalte) • Informationen über Benutzer • Rechte, die

    der Client wahrnehmen darf • Aussteller • Audience (für wen wurde Token ausgestellt?) • Gültigkeitsdatum • Signatur des Ausstellers Folie▪ 14
  8. Token-Format • OAuth 2 schreibt kein Token-Format vor • Resource

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

    JSON Web Token • Kann signiert und/oder verschlüsselt sein Folie▪ 16
  10. SSO mit OAuth Folie▪ 20 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
  11. 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 Folie▪ 21
  12. Implicit Flow mit OIDC Folie▪ 22 Client Authorization-Server Resource-Server 1.

    Umleitung 2. Umleitung mit Access-Token und Id-Token 3. Access-Token
  13. Demo • Angular Client • angular-oauth2-oidc • https://www.npmjs.com/package/angular-oauth2-oidc • IdentityServer

    • .NET/ .NET Core • https://github.com/IdentityServer • Alternative mit Java • Keycloak (Redhad, http://www.keycloak.org/) • Unser Artikel: https://goo.gl/Tt4thz
  14. Fazit Token: Flexibilität und Cross Origin OAuth 2: Autorisierung OpenId

    Connect: Authentifizierung Implicit Flow: SPA Password Flow: Keine Umleitung