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

2 / x Vorstellung Jürgen Groothues Fa. InterComponentWare AG (Walldorf/Baden) Senior Software Developer Technical Lead Application Security 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) Sicherheit in verteilten Systemen mit Java und SAML

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

5 Anwendungsfälle Sicherheit 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 Sicherheit 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 Sicherheit 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? Sicherheit 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? SAML Autorisierungs- Daten SAML Identitäts- Daten Identity Provider Service Provider

10 / x SAML Architektur Sicherheit 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 Sicherheit in verteilten Systemen mit Java und SAML 11 Assertion

12 / x SAML Architektur Sicherheit 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 Sicherheit in verteilten Systemen mit Java und SAML 13 Assertion with Attributes

14 / x SAML Architektur Sicherheit 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 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 Sicherheit 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 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 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 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 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 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 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 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

25 / x JAVA XML DIGITAL SIGNATURE API Wie hilft Java bei der Lösung? Sicherheit 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 JSR 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) 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) 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) 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? Sicherheit in verteilten Systemen mit Java und SAML 30

31 / x JAXB 2.x Sicherheit in verteilten Systemen mit Java und SAML 31 Übersicht JSR 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 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 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 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

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

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

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

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

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

41 / x Beispiel-Anwendung Sicherheit in verteilten Systemen mit Java und SAML Web Service Security – SOAP Request soap:Envelope soap:Body soap:Header wsse:Security WS-Security Core Specification WS-Security SAML Token Profile my:currentTime saml:Assertion 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

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

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

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

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

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

48 Resourcen Sicherheit in verteilten Systemen mit Java und SAML 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: OASIS SAML Übersichtsseite: IHE XUA (Cross Enterprise User Assertion, ab Seite 88): 0_Vol2b_FT_ pdf 0_Vol2b_FT_ pdf JAXB Java XML Digital Signatures Programming with the Java XML Digital Signature API

49 / x Vielen Dank für Ihre Aufmerksamkeit 49 InterComponentWare Inc. 650 East Swedesford Road - Suite 180 Wayne, PA 19087, USA Tel.: Fax: InterComponentWare AG Altrottstraße 31 / Partner-Port Walldorf, Germany Tel.: +49 (0) Fax: +49 (0) Sicherheit in verteilten Systemen mit Java und SAML 49 / x


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