x Public Sicherheit in verteilten Systemen mit Java und SAML Karlsruher Entwicklertag 2012...

Preview:

Citation preview

/ xSicherheit in verteilten Systemen mit Java und SAML

Public

Sicherheit in verteilten Systemen mit Java und SAMLKarlsruher Entwicklertag 2012

Jürgen Groothues

09.05.2012

/ xSicherheit 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

09.05.2012

/ xSicherheit in verteilten Systemen mit Java und SAML 3

AgendaSicherheit 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

/ xSicherheit in verteilten Systemen mit Java und SAML 4

ANWENDUNGSFÄLLEWas ist das Problem?

09.05.2012 / x

/ xSicherheit in verteilten Systemen mit Java und SAML 5

Anwendungsfälle

09.05.2012

Authentifizierung von Web Services

Web Service Aufruf

Krankenhaus B

Identitäts-Information

Internet

Krankenhaus A

Arzt

/ x

Anwendungsfälle

09.05.2012 Sicherheit in verteilten Systemen mit Java und SAML 6

Attribut-basierte Autorisierung

Autorisierungs-Information

6

Web Service Aufruf

Krankenhaus B

Internet

Krankenhaus A

Arzt

/ xSicherheit in verteilten Systemen mit Java und SAML 7

Anwendungsfälle

09.05.2012

Web Single Sign-On

Airline.com

CarRental.com

Authentifizierung

Zugriff aufgeschützte Resource

1

2

Benutzer

Browser

Identitäts-Inform

ation

/ xSicherheit in verteilten Systemen mit Java und SAML 8

SAML ARCHITEKTURWie hilft SAML bei der Lösung?

09.05.2012

/ xSicherheit in verteilten Systemen mit Java und SAML 9

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

Was ist SAML?

09.05.2012

SAML

Autorisierungs-Daten

SAML

Identitäts-Daten

Identity Provider

Service Provider

/ xSicherheit in verteilten Systemen mit Java und SAML 10

SAML Architektur

09.05.2012

Assertion

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

/ xSicherheit in verteilten Systemen mit Java und SAML 11

SAML Architecture

09.05.2012

Assertion

/ x12

SAML Architektur

09.05.2012 Sicherheit in verteilten Systemen mit Java und SAML

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

/ xSicherheit in verteilten Systemen mit Java und SAML 13

SAML Architecture

09.05.2012

Assertion with Attributes

/ xSicherheit in verteilten Systemen mit Java und SAML 14

SAML Architektur

09.05.2012

Konzepte

AssertionsAuthentifizierung,

autorisierungsrelevante Attribute

benutzt

ProtocolsKommunikation von Assertions

BindingsMapping von SAML Protocols auf

Standardprotokolle

ProfilesKombiniert Bindings, Protocols und Assertions

um einen konkreten Anwendungsfall abzubilden

Web Browser SSO Profile

HTTP Post Binding

Authentication Request Protocol

Authentication Statement

Beispiele:

/ xSicherheit in verteilten Systemen mit Java und SAML 15

SAML ArchitekturSicherheit 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)

/ xSicherheit in verteilten Systemen mit Java und SAML 16

DIGITALE SIGNATURExkursion

09.05.2012

/ xSicherheit in verteilten Systemen mit Java und SAML 17

Exkursion: Digitale SignaturGrundlage: Asymmetrische Verschlüsselung

09.05.2012

Encrypter

Bob‘s Public Key

Original

Decrypter

Bob‘s 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

/ xSicherheit in verteilten Systemen mit Java und SAML 18

Exkursion: Digitale SignaturSignatur Erstellung

09.05.2012

Encrypter

Alices‘s 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

/ xSicherheit in verteilten Systemen mit Java und SAML 19

Exkursion: Digitale SignaturSignatur Verifikation

09.05.2012

Alices‘s 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

ComputedDigest

Decrypter

DecryptedDigest

Equal?

yes no

Message Integrity and Authenticity Verification

successful failed

/ xSicherheit in verteilten Systemen mit Java und SAML 20

Exkursion: Digitale SignaturAnforderungen 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/)

• Problem: Syntaktisch äquivalente XML Dokumente können unterschiedliche Signaturen produzieren...

/ xSicherheit in verteilten Systemen mit Java und SAML 21

Exkursion: Digitale SignaturProblem XML Signatur

09.05.2012

• Herausfoderung XML Signatur: Syntaktisch äquivalente XML Dokumente können unterschiedliche Signaturen produzieren:

Signature Signature

/ xSicherheit in verteilten Systemen mit Java und SAML 22

Exkursion: Digitale SignaturXML Canonicalization

09.05.2012

• XML Canonicalization (c14n): Wohlgeformte XML Dokumente werden in ein „Standard-Format“ transformiert (

http://www.w3.org/TR/xml-c14n)

CanonicalForm

c14n

c14n

c14n

c14n

Universum aller XML Dokumente

Syntaktisch äquivalente XML Dokumente

/ xSicherheit in verteilten Systemen mit Java und SAML

Exkursion: Digitale Signatur

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

/ xSicherheit in verteilten Systemen mit Java und SAML 24

Exkursion: Digitale SignaturXML Signatur - Beispiel

09.05.2012

/ xSicherheit in verteilten Systemen mit Java und SAML 25

JAVA XML DIGITAL SIGNATURE APIWie hilft Java bei der Lösung?

09.05.2012

/ xSicherheit in verteilten Systemen mit Java und SAML 26

Java XML Digital Signature APIÜ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/) 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

/ xSicherheit in verteilten Systemen mit Java und SAML 27

Java XML Digital Signature APIErzeugung einer XML Signatur (1/3)

09.05.2012

Signature

KeyInfo

SignedInfo

SignatureMethod

CanonicalizationMetho

Reference Assertion

Transforms

DigestMethod

DigestValue

SignatureValue

/ xSicherheit in verteilten Systemen mit Java und SAML 28

Java XML Digital Signature APIErzeugung einer XML Signatur (2/3)

09.05.2012

Signature

KeyInfo

SignedInfo

SignatureMethod

CanonicalizationMetho

Reference Assertion

Transforms

DigestMethod

DigestValue

SignatureValue

/ xSicherheit in verteilten Systemen mit Java und SAML 29

Java XML Digital Signature APIErzeugung einer XML Signatur (3/3)

09.05.2012

Signature

SignatureValue

SignedInfo

SignatureMethod

CanonicalizationMetho

Reference Assertion

Transforms

DigestMethod

DigestValue

KeyInfo

/ xSicherheit in verteilten Systemen mit Java und SAML 30

JAVA ARCHITECTURE FOR XML BINDING (JAXB 2.X)

Wie hilft Java bei der Lösung?

09.05.2012

/ xSicherheit in verteilten Systemen mit Java und SAML 31

JAXB 2.xÜbersicht

09.05.2012

• 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

/ xSicherheit in verteilten Systemen mit Java und SAML 32

JAXB 2.xArchitektur

09.05.2012

Binding-Framework(JAXB-API)

XML-Dokument

Compile-Zeit Laufzeit

XML-Schema

Bindungs-Deklarationen

JAXB-Annotationen

Schema-Compiler

Schema-Generator

Marshal Unmarshal

object Class Model

Assertion

Issuer

Signature

Java BeansInstanzen

Marshal Unmarshal

Java Beans

/ xSicherheit in verteilten Systemen mit Java und SAML 33

JAXB 2.xSchema-Compiler

09.05.2012

• Der Schema-Compiler generiert aus einem XML Schema Java Klassen mit JAXB-Annotationen:

XML-Schemakomponente Java-Komponente

Namespace Packageoasis.names.tc.saml._2_0.assertion

Datentyp Java-Klasse

Element Instanz-Variable

... ...

/ xSicherheit in verteilten Systemen mit Java und SAML 34

JAXB 2.xSchema-Compiler

09.05.2012

• Das Default-Verhalten des Schema-Compilers kann mit Bindungs-Deklarationen überschrieben werden:

Package-Name überschreiben:

Klassen-Name überschreiben:

/ xSicherheit in verteilten Systemen mit Java und SAML 35

JAXB 2.xSchema-Compiler mit Maven

09.05.2012

/ xSicherheit in verteilten Systemen mit Java und SAML 36

MYSAMLLösungs-Beispiel

09.05.2012

/ xSicherheit in verteilten Systemen mit Java und SAML 37

MySamlArchitektur

09.05.2012

class MySAML

SamlContext

AssertionBuilder

+ build(Map) :Document

ResponseBuilder

+ build(Map) :Document

ResponseExtractor

+ extractAssertion() :Document

AssertionValidator

+ validate(Document) :void

DefaultProperties

SamlContextFactory

+ createSamlContext(Map) :SamlContext

create create

create create

use

use

create

/ xSicherheit in verteilten Systemen mit Java und SAML 38

MySamlAPI

09.05.2012

<Demo>https://github.com/groothues/mysaml

/ xSicherheit in verteilten Systemen mit Java und SAML 39

WS-SECURITY, SSOBeispiel-Anwendungen

09.05.2012

/ xSicherheit in verteilten Systemen mit Java und SAML 40

Beispiel-AnwendungWeb Service Security

09.05.2012

cmp WS-Security Sample

«ws client»soapUI

«ws server»TimeServ ice

«tokenservice»mySAML Sample

«SOAPHandler»SamlAuthenticator

«WebService»Timer

1. hole SAMLAssertion(manuell)

2. sende WSRequest mitSAMLAssertion

/ xSicherheit in verteilten Systemen mit Java und SAML

Beispiel-AnwendungWeb 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

/ xSicherheit in verteilten Systemen mit Java und SAML 42

Beispiel-AnwendungWeb Service Security – Trust Relationship

09.05.2012

web WS Security Sample Trust Relationship

«ws server»TimeServ ice

«tokenservice»mySAML Sample

Key Store Trust Store

trust

/ xSicherheit in verteilten Systemen mit Java und SAML 43

Beispiel-AnwendungWeb Service Security

09.05.2012

<Demo>https://github.com/groothues/mysaml

/ xSicherheit in verteilten Systemen mit Java und SAML 44

Beispiel-AnwendungWeb Single Sign-On (SSO)

09.05.2012

web IdP-Initiated SSO

«Identity Provider»Web Anwendung 1

«Service Provider»Web Anwendung 2

User's Browser

SAML SSO Serv let Login FilterSAML SSO Login Filter

4.

2. Username /Passwordabfragen

5. HTML Form withSAML Assertion

1. Resourceanfragen

6. POST HTMLForm withSAML Assertion

3. User login

7. Supply resource

/ xSicherheit in verteilten Systemen mit Java und SAML 45

Beispiel-AnwendungWeb Single Sign-On – Trust Relationship

09.05.2012

web SSO Sample Trust Relationship

«Identity Provider»Web Anwendung 1

«Service Provider»Web Anwendung 2

Trust Store Key Store

trust

/ xSicherheit in verteilten Systemen mit Java und SAML 46

Beispiel-AnwendungWeb Single Sign-On (SSO)

09.05.2012

<Demo>

/ xSicherheit in verteilten Systemen mit Java und SAML 47

RESSOURCEN

09.05.2012 / x

/ xSicherheit in verteilten Systemen mit Java und SAML 48

Resourcen

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• 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/

/ x

Vielen Dank für Ihre Aufmerksamkeit

Sicherheit in verteilten Systemen mit Java und SAML 4949

InterComponentWare Inc.650 East Swedesford Road - Suite 180

Wayne, PA 19087, USATel.: +1 610 947 6500Fax: +1 610 947 6519

E-mail: usinfo@icw-global.com

www.icw-global.com

InterComponentWare AGAltrottstraße 31 / Partner-Port

69190 Walldorf, GermanyTel.: +49 (0) 6227 385 100Fax: +49 (0) 6227 385 199

E-mail: info@icw-global.com

www.icw-global.com

/ x09.05.2012

Recommended