1 / 49

Sicherheit in verteilten Systemen mit Java und SAML

Sicherheit in verteilten Systemen mit Java und SAML. Karlsruher Entwicklertag 2012. Jürgen Groothues. Vorstellung. Jürgen Groothues ( juergen@groothues.icw.de ) Fa . InterComponentWare AG (Walldorf/Baden) Senior Software Developer Technical Lead Application Security. Agenda.

Download Presentation

Sicherheit in verteilten Systemen mit Java und SAML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sicherheit in verteilten Systemen mit Java und SAML KarlsruherEntwicklertag 2012 JürgenGroothues Sicherheit in verteilten Systemen mit Java und SAML

  2. Vorstellung • Jürgen Groothues (juergen@groothues.icw.de) • Fa. InterComponentWare AG (Walldorf/Baden) • Senior Software Developer • Technical Lead Application Security Sicherheit in verteilten Systemen mit Java und SAML

  3. Agenda • Sicherheit in verteilten Systemen mit Java und SAML • Was ist das Problem? • Wie hilft SAML bei der Lösung? • Exkursion: Digitale Signatur • Wie hilft Java bei der Lösung? • Lösungs-Beispiele (Code und Demos) Sicherheit in verteilten Systemen mit Java und SAML

  4. Was ist das Problem? Anwendungsfälle Sicherheit in verteilten Systemen mit Java und SAML • / x

  5. Anwendungsfälle • Authentifizierung von Web Services Krankenhaus A Krankenhaus B Internet Web Service Aufruf Identitäts- Information Arzt Sicherheit in verteilten Systemen mit Java und SAML

  6. Anwendungsfälle • Attribut-basierte Autorisierung Krankenhaus A Krankenhaus B Internet Web Service Aufruf Autorisierungs- Information Arzt Sicherheit in verteilten Systemen mit Java und SAML 6

  7. Anwendungsfälle • Web Single Sign-On Airline.com Identitäts- Information Authentifizierung Benutzer Browser 1 2 CarRental.com Zugriff auf geschützte Resource Sicherheit in verteilten Systemen mit Java und SAML

  8. Wie hilft SAML bei der Lösung? Saml Architektur Sicherheit in verteilten Systemen mit Java und SAML

  9. SAML Architektur • Was ist SAML? • Entwickelt vom Security Services Technical Committee der „Organisation for the Advancement of Structured Information Standards“(Sponsoren z.Bsp.: IBM, Microsoft, Oracle, SAP, HP, US DoD, viele andere... ) • Ein offener, XML-basierter Standard zur Beschreibung und zum Austausch von Identitäts- und Autorisierungs-Daten Service Provider Identity Provider Identitäts- Daten Autorisierungs- Daten SAML SAML Sicherheit in verteilten Systemen mit Java und SAML

  10. SAML Architektur • Assertion Assertion „ Der Aussteller (Issuer) versichert, daß der Eigentümer (Subject) dieser Assertion sich mit einem Password erfolgreich authentifiziert hat (AuthnStatement). Diese Assertion ist gültig unter diesen Bedingungen (Conditions): ...“ Signaturedes Issuer Issuer Subject Conditions AuthnStatement Signature Sicherheit in verteilten Systemen mit Java und SAML

  11. SAML Architecture • Assertion Sicherheit in verteilten Systemen mit Java und SAML

  12. SAML Architektur • Assertion mit Attributen Assertion Issuer „...Der Eigentümer(Subject) hat die folgenden Rollen:... und arbeitet in der folgenden Abteilung:... (Attributes).“ Signaturedes Issuer Subject Conditions AuthnStatement AttributeStatement Signature Sicherheit in verteilten Systemen mit Java und SAML

  13. SAML Architecture • Assertion with Attributes Sicherheit in verteilten Systemen mit Java und SAML

  14. SAML Architektur • Konzepte Beispiele: benutzt • Web Browser SSO Profile • HTTP Post Binding • Authentication Request Protocol • Authentication Statement Profiles Kombiniert Bindings, Protocols und Assertions um einen konkreten Anwendungsfall abzubilden Bindings Mapping von SAML Protocols auf Standardprotokolle Protocols Kommunikation von Assertions Assertions Authentifizierung, autorisierungsrelevante Attribute Sicherheit in verteilten Systemen mit Java und SAML

  15. SAML Architektur • Sicherheit von Assertions • Wie wird eine Assertion gegen Fälschung geschützt? • Digitale Signatur des Assertion-Ausstellers (Signature) • Wie wird eine Assertion gegen Mißbrauch geschützt? • Verwendung eines Gültigkeits-Zeitraums (NotBefore/NotOnOrAfter) • Einschränkung des Empfänger-Kreises (Audience) • Verhinderung der Wiederverwendung (durch Service-Provider) • Bindung der Assertion an die Nachricht (HolderOfKey) • Wie wird die Vertraulichkeit der Assertion geschützt? • Verwendung von verschlüsselter Assertion (EncryptedAssertion) • Verwendung von SSL (TLS) als Transport-Level Sicherheit (durch Infrastruktur) • Warum kann man einer Assertion überhaupt trauen? • Weil man dem Aussteller der Assertion vertraut (PKI/Trust-Relationship, Signature) Sicherheit in verteilten Systemen mit Java und SAML

  16. Exkursion Digitale Signatur Sicherheit in verteilten Systemen mit Java und SAML

  17. Exkursion: Digitale Signatur • Grundlage: Asymmetrische Verschlüsselung Alice Bob • Das Original wird mit dem Public Key des Empfängers verschlüsselt und kann nur mit dem Private Key des Empfängers entschlüsselt werden Original Original Encrypted Bob‘s Private Key Bob‘s Public Key Encrypter Decrypter Sicherheit in verteilten Systemen mit Java und SAML

  18. Exkursion: Digitale Signatur • Signatur Erstellung Alice • Der Sender hängt einen mit seinem Private Key verschlüsselten Digest an die Nachricht an. Message Digest Digester Signed Message Alices‘s Private Key Bob Encrypter Signature Sicherheit in verteilten Systemen mit Java und SAML

  19. Exkursion: Digitale Signatur • Signatur Verifikation Bob • Der Empfänger verwendet den Public Key des Senders um den Digest zu entschlüsseln und vergleicht diesen Wert mit dem selbst berechneten Digest. Message Signature Message Integrity and Authenticity Verification failed successful Alices‘s Public Key Digester Decrypter yes no Computed Digest Decrypted Digest Equal? Sicherheit in verteilten Systemen mit Java und SAML

  20. Exkursion: Digitale Signatur • Anforderungen an XML Signatur • Gesamtes XML Dokument oder einzelne XML Elemente sollen signiert werden können • Aufgrund von Geschäftsregeln • Aus Performance Gründen • Signatur-Metadaten müssen kommuniziert werden • Welche Schlüssel wurden für die Signatur verwendet • Welche XML Elemente wurden signiert • Signatur muß selbst als XML Element dargestellt werden können (http://www.w3.org/TR/xmldsig-core/) • Problem: Syntaktisch äquivalente XML Dokumente können unterschiedliche Signaturen produzieren... Sicherheit in verteilten Systemen mit Java und SAML

  21. Exkursion: Digitale Signatur • Problem XML Signatur • Herausfoderung XML Signatur: • Syntaktisch äquivalente XML Dokumente können unterschiedliche Signaturen produzieren: Signature Signature Sicherheit in verteilten Systemen mit Java und SAML

  22. Exkursion: Digitale Signatur • XML Canonicalization • XML Canonicalization (c14n): • Wohlgeformte XML Dokumente werden in ein „Standard-Format“ transformiert (http://www.w3.org/TR/xml-c14n) Universum aller XML Dokumente Syntaktisch äquivalente XML Dokumente c14n c14n c14n c14n Canonical Form Sicherheit in verteilten Systemen mit Java und SAML

  23. Exkursion: Digitale Signatur • XML Signatur und SAML Assertion Assertion • SignedInfo: Was wurde wie signiert Signature SignedInfo CanonicalizationMethod SignatureMethod Reference  Assertion • Reference: Welches Element bzw. Dokument wurde signiert Transforms DigestMethod DigestValue • DigestValue: Digest des referenzierten Elements (base64) SignatureValue • SignatureValue: Verschlüsselter Digest des SignedInfo Elements (base64) KeyInfo • KeyInfo: Informationen über den verwendeten Signatur-Schlüssel Sicherheit in verteilten Systemen mit Java und SAML

  24. Exkursion: Digitale Signatur • XML Signatur - Beispiel Sicherheit in verteilten Systemen mit Java und SAML

  25. Wie hilft Java bei der Lösung? JaVA XML Digital SignaturE API Sicherheit in verteilten Systemen mit Java und SAML

  26. Java XML Digital Signature API • Übersicht • JSR 105 • http://jcp.org/en/jsr/detail?id=105 • Seit Java SE 6 • Erlaubt Erzeugung und Validierung von XML Signaturen • Unterstützt die W3C XML Digital Signature Spezifikation (http://www.w3.org/TR/xmldsig-core/) • Erlaubt die Signierung von XML- und Binär-Daten • Basiert auf der Java Cryptography Service Provider Architecture (JCA) • Relevante Java SE Packages: • javax.xml.crypto • javax.xml.crypto.dsig • javax.xml.crypto.dsig.keyinfo • javax.xml.crypto.dsig.spec • javax.xml.crypto.dom • javax.xml.crypto.dsig.dom Sicherheit in verteilten Systemen mit Java und SAML

  27. Java XML Digital Signature API • Erzeugung einer XML Signatur (1/3) Signature SignedInfo CanonicalizationMetho SignatureMethod Reference  Assertion Transforms DigestMethod DigestValue SignatureValue KeyInfo Sicherheit in verteilten Systemen mit Java und SAML

  28. Java XML Digital Signature API • Erzeugung einer XML Signatur (2/3) Signature SignedInfo CanonicalizationMetho SignatureMethod Reference  Assertion Transforms DigestMethod DigestValue SignatureValue KeyInfo Sicherheit in verteilten Systemen mit Java und SAML

  29. Java XML Digital Signature API • Erzeugung einer XML Signatur (3/3) Signature SignedInfo CanonicalizationMetho SignatureMethod Reference  Assertion Transforms DigestMethod DigestValue SignatureValue KeyInfo Sicherheit in verteilten Systemen mit Java und SAML

  30. Wie hilft Java bei der Lösung? Java Architecture for XML Binding (JAXB 2.x) Sicherheit in verteilten Systemen mit Java und SAML

  31. JAXB 2.x • Übersicht • JSR 222 • http://jcp.org/en/jsr/detail?id=222 • Referenzimplementierung: JAXB Project (http://jaxb.java.net) • Seit Java 5 Bestandteil Java SE • Bindet (bidirektional) XML an Java Beans (POJOs) • Generiert Java Beans aus einem bestehenden XML Schema • Generiert XML Schemas aus einem bestehenden Java Beans Datenmodell • Verwendet Java-Annotationen als Bindungs-Informationen • Relevante Java SE Packages: • javax.xml.bind • javax.xml. bind.annotation • javax.xml. bind.annotation.adapters • javax.xml. bind.attachment • javax.xml. bind.util Sicherheit in verteilten Systemen mit Java und SAML

  32. JAXB 2.x • Architektur Compile-Zeit Laufzeit XML-Schema XML- Dokument Bindungs- Deklarationen Unmarshal Marshal Schema- Generator Binding-Framework (JAXB-API) Schema- Compiler Unmarshal Marshal JAXB- Annotationen Java Beans Java Beans Instanzen Sicherheit in verteilten Systemen mit Java und SAML

  33. JAXB 2.x • Schema-Compiler • Der Schema-Compiler generiert aus einem XML Schema Java Klassen mit JAXB-Annotationen: Sicherheit in verteilten Systemen mit Java und SAML

  34. JAXB 2.x • Schema-Compiler • Das Default-Verhalten des Schema-Compilers kann mit Bindungs-Deklarationen überschrieben werden: • Package-Name überschreiben: • Klassen-Name überschreiben: Sicherheit in verteilten Systemen mit Java und SAML

  35. JAXB 2.x • Schema-Compiler mit Maven Sicherheit in verteilten Systemen mit Java und SAML

  36. Lösungs-Beispiel MySAML Sicherheit in verteilten Systemen mit Java und SAML

  37. MySaml • Architektur Sicherheit in verteilten Systemen mit Java und SAML

  38. MySaml • API <Demo> https://github.com/groothues/mysaml Sicherheit in verteilten Systemen mit Java und SAML

  39. Beispiel-Anwendungen WS-Security, SSO Sicherheit in verteilten Systemen mit Java und SAML

  40. Beispiel-Anwendung • Web Service Security Sicherheit in verteilten Systemen mit Java und SAML

  41. Beispiel-Anwendung • Web Service Security – SOAP Request • WS-Security Core Specification soap:Envelope soap:Header wsse:Security saml:Assertion • WS-Security SAML Token Profile • http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss soap:Body my:currentTime Sicherheit in verteilten Systemen mit Java und SAML

  42. Beispiel-Anwendung • Web Service Security – Trust Relationship Sicherheit in verteilten Systemen mit Java und SAML

  43. Beispiel-Anwendung • Web Service Security <Demo> https://github.com/groothues/mysaml Sicherheit in verteilten Systemen mit Java und SAML

  44. Beispiel-Anwendung • Web Single Sign-On (SSO) Sicherheit in verteilten Systemen mit Java und SAML

  45. Beispiel-Anwendung • Web Single Sign-On – Trust Relationship Sicherheit in verteilten Systemen mit Java und SAML

  46. Beispiel-Anwendung • Web Single Sign-On (SSO) <Demo> Sicherheit in verteilten Systemen mit Java und SAML

  47. Ressourcen Sicherheit in verteilten Systemen mit Java und SAML • / x

  48. Resourcen • JAXB 2.0, Samuel Michaelis u. Wolfgang Schmiesing, Hanser Verlag • SOA Security, Ramarao Kanneganti u. Prasad Chodavarapu, Manning Verlag • SAML (Knowledgebase für SAML Specs, Profile, Tutorials und Implementierungen:http://saml.xml.org/wiki/saml-wiki-knowledgebase • OASIS SAML Übersichtsseite:http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security • IHE XUA (Cross Enterprise User Assertion, ab Seite 88):http://www.ihe.net/Technical_Framework/upload/IHE_ITI_TF_Rev7-0_Vol2b_FT_2010-08-10.pdf • JAXBhttp://jaxb.java.net/ • Java XML Digital Signatureshttp://java.sun.com/developer/technicalArticles/xml/dig_signatures/ • Programming with the Java XML Digital Signature APIhttp://java.sun.com/developer/technicalArticles/xml/dig_signature_api/ Sicherheit in verteilten Systemen mit Java und SAML

  49. Sicherheit in verteilten Systemen mit Java und SAML • / x

More Related