Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

/ x Public Sicherheit in verteilten Systemen mit Java und SAML Karlsruher Entwicklertag 2012 Sicherheit in verteilten Systemen mit Java und SAML Jürgen.

Ähnliche Präsentationen


Präsentation zum Thema: "/ x Public Sicherheit in verteilten Systemen mit Java und SAML Karlsruher Entwicklertag 2012 Sicherheit in verteilten Systemen mit Java und SAML Jürgen."—  Präsentation transkript:

1 / x Public Sicherheit in verteilten Systemen mit Java und SAML Karlsruher Entwicklertag 2012 Sicherheit in verteilten Systemen mit Java und SAML Jürgen Groothues 09.05.2012

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

3 / x 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) 09.05.2012 3 Sicherheit in verteilten Systemen mit Java und SAML

4 / x ANWENDUNGSFÄLLE Was ist das Problem? 09.05.2012Sicherheit in verteilten Systemen mit Java und SAML 4 / x

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

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

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

8 / x SAML ARCHITEKTUR Wie hilft SAML bei der Lösung? 09.05.2012Sicherheit in verteilten Systemen mit Java und SAML 8

9 / x SAML Architektur 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 Sicherheit in verteilten Systemen mit Java und SAML 9 Was ist SAML? 09.05.2012 SAML Autorisierungs- Daten SAML Identitäts- Daten Identity Provider Service Provider

10 / x SAML Architektur 09.05.2012Sicherheit in verteilten Systemen mit Java und SAML 10 Assertion Issuer Subject Conditions AuthnStatement Signature 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):... Signature des Issuer

11 / x SAML Architecture 09.05.2012Sicherheit in verteilten Systemen mit Java und SAML 11 Assertion

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

13 / x SAML Architecture 09.05.2012Sicherheit in verteilten Systemen mit Java und SAML 13 Assertion with Attributes

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

15 / x SAML Architektur Sicherheit in verteilten Systemen mit Java und SAML 15 Sicherheit von Assertions 09.05.2012 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)

16 / x DIGITALE SIGNATUR Exkursion 09.05.2012Sicherheit in verteilten Systemen mit Java und SAML 16

17 / x Exkursion: Digitale Signatur Sicherheit in verteilten Systemen mit Java und SAML 17 Grundlage: Asymmetrische Verschlüsselung 09.05.2012 Encrypter Bobs Public Key Original Decrypter Bobs Private Key Original 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 Encrypted Alice Bob

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

19 / x Exkursion: Digitale Signatur Sicherheit in verteilten Systemen mit Java und SAML 19 Signatur Verifikation 09.05.2012 Alicess Public Key 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 Bob Signature Digester Computed Digest Decrypter Decrypted Digest Equal? yes no Message Integrity and Authenticity Verification successful failed

20 / x Exkursion: Digitale Signatur Sicherheit in verteilten Systemen mit Java und SAML 20 Anforderungen an XML Signatur 09.05.2012 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/)http://www.w3.org/TR/xmldsig-core/ Problem: Syntaktisch äquivalente XML Dokumente können unterschiedliche Signaturen produzieren...

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

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

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

24 / x Exkursion: Digitale Signatur Sicherheit in verteilten Systemen mit Java und SAML 24 XML Signatur - Beispiel 09.05.2012

25 / x JAVA XML DIGITAL SIGNATURE API Wie hilft Java bei der Lösung? 09.05.2012Sicherheit in verteilten Systemen mit Java und SAML 25

26 / x Java XML Digital Signature API Sicherheit in verteilten Systemen mit Java und SAML 26 Übersicht 09.05.2012 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/)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

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

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

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

30 / x JAVA ARCHITECTURE FOR XML BINDING (JAXB 2.X) Wie hilft Java bei der Lösung? 09.05.2012Sicherheit in verteilten Systemen mit Java und SAML 30

31 / x JAXB 2.x Sicherheit in verteilten Systemen mit Java und SAML 31 Übersicht 09.05.2012 JSR 222 http://jcp.org/en/jsr/detail?id=222 Referenzimplementierung: JAXB Project (http://jaxb.java.net)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

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

33 / x JAXB 2.x Sicherheit in verteilten Systemen mit Java und SAML 33 Schema-Compiler 09.05.2012 Der Schema-Compiler generiert aus einem XML Schema Java Klassen mit JAXB- Annotationen: XML-SchemakomponenteJava-Komponente NamespacePackage oasis.names.tc.saml._2_0.assertion DatentypJava-Klasse ElementInstanz-Variable...

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

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

36 / x MYSAML Lösungs-Beispiel 09.05.2012Sicherheit in verteilten Systemen mit Java und SAML 36

37 / x MySaml Sicherheit in verteilten Systemen mit Java und SAML 37 Architektur 09.05.2012

38 / x MySaml Sicherheit in verteilten Systemen mit Java und SAML 38 API 09.05.2012 https://github.com/groothues/mysaml

39 / x WS-SECURITY, SSO Beispiel-Anwendungen 09.05.2012Sicherheit in verteilten Systemen mit Java und SAML 39

40 / x Beispiel-Anwendung Sicherheit in verteilten Systemen mit Java und SAML 40 Web Service Security 09.05.2012

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

42 / x Beispiel-Anwendung Sicherheit in verteilten Systemen mit Java und SAML 42 Web Service Security – Trust Relationship 09.05.2012

43 / x Beispiel-Anwendung Sicherheit in verteilten Systemen mit Java und SAML 43 Web Service Security 09.05.2012 https://github.com/groothues/mysaml

44 / x Beispiel-Anwendung Sicherheit in verteilten Systemen mit Java und SAML 44 Web Single Sign-On (SSO) 09.05.2012

45 / x Beispiel-Anwendung Sicherheit in verteilten Systemen mit Java und SAML 45 Web Single Sign-On – Trust Relationship 09.05.2012

46 / x Beispiel-Anwendung Sicherheit in verteilten Systemen mit Java und SAML 46 Web Single Sign-On (SSO) 09.05.2012

47 / x RESSOURCEN 09.05.2012Sicherheit in verteilten Systemen mit Java und SAML 47 / x

48 Resourcen Sicherheit in verteilten Systemen mit Java und SAML 48 09.05.2012 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 http://saml.xml.org/wiki/saml-wiki-knowledgebase OASIS SAML Übersichtsseite: http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security 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 http://www.ihe.net/Technical_Framework/upload/IHE_ITI_TF_Rev7- 0_Vol2b_FT_2010-08-10.pdf JAXB http://jaxb.java.net/ http://jaxb.java.net/ Java XML Digital Signatures http://java.sun.com/developer/technicalArticles/xml/dig_signatures/ http://java.sun.com/developer/technicalArticles/xml/dig_signatures/ Programming with the Java XML Digital Signature API http://java.sun.com/developer/technicalArticles/xml/dig_signature_api/ http://java.sun.com/developer/technicalArticles/xml/dig_signature_api/

49 / x Vielen Dank für Ihre Aufmerksamkeit 49 InterComponentWare Inc. 650 East Swedesford Road - Suite 180 Wayne, PA 19087, USA Tel.: +1 610 947 6500 Fax: +1 610 947 6519 E-mail: usinfo@icw-global.com www.icw-global.com InterComponentWare AG Altrottstraße 31 / Partner-Port 69190 Walldorf, Germany Tel.: +49 (0) 6227 385 100 Fax: +49 (0) 6227 385 199 E-mail: info@icw-global.com www.icw-global.com Sicherheit in verteilten Systemen mit Java und SAML 49 / x 09.05.2012


Herunterladen ppt "/ x Public Sicherheit in verteilten Systemen mit Java und SAML Karlsruher Entwicklertag 2012 Sicherheit in verteilten Systemen mit Java und SAML Jürgen."

Ähnliche Präsentationen


Google-Anzeigen