Java und SAML

Werbung
Sicherheit in verteilten
Systemen mit Java und SAML
Karlsruher Entwicklertag 2012
Jürgen Groothues
Public
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
/x
Vorstellung
 Jürgen Groothues ([email protected])
 Fa. InterComponentWare AG (Walldorf/Baden)
 Senior Software Developer
 Technical Lead Application Security
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
2/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
Sicherheit in verteilten Systemen mit Java und SAML
3/x
Was ist das Problem?
ANWENDUNGSFÄLLE
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
4/x
Anwendungsfälle
Authentifizierung von Web Services
Krankenhaus A
Krankenhaus B
Internet
Web Service
Aufruf
Arzt
IdentitätsInformation
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
5/x
Anwendungsfälle
Attribut-basierte Autorisierung
Krankenhaus A
Krankenhaus B
Internet
Web Service
Aufruf
Arzt
AutorisierungsInformation
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
66/ x
Anwendungsfälle
Web Single Sign-On
Airline.com
Benutzer
Authentifizierung
IdentitätsInformation
Browser
1
2
CarRental.com
Zugriff auf
geschützte Resource
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
7/x
Wie hilft SAML bei der Lösung?
SAML ARCHITEKTUR
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
8/x
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
Identity
Provider
IdentitätsDaten
Service
Provider
AutorisierungsDaten
SAML
SAML
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
9/x
SAML Architektur
Assertion
Assertion
Issuer
Subject
Conditions
AuthnStatement
Signature
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
„ 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
10 / x
SAML Architecture
Assertion
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
11 / x
SAML Architektur
Assertion mit Attributen
Assertion
Issuer
Subject
Conditions
AuthnStatement
AttributeStatement
„...
Der Eigentümer(Subject) hat die
folgenden Rollen:... und arbeitet in
der folgenden Abteilung:...
(Attributes).“
Signature des Issuer
Signature
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
12 / x
SAML Architecture
Assertion with Attributes
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
13 / x
SAML Architektur
Konzepte
Beispiele:
Profiles
Kombiniert Bindings, Protocols und Assertions
um einen konkreten Anwendungsfall abzubilden
Bindings
benutzt
Mapping von SAML Protocols auf
Standardprotokolle
Protocols
Kommunikation von Assertions
 Web Browser SSO Profile
 HTTP Post Binding
 Authentication Request Protocol
Assertions
Authentifizierung,
autorisierungsrelevante Attribute
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
 Authentication Statement
14 / x
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)
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
15 / x
Exkursion
DIGITALE SIGNATUR
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
16 / x
Exkursion: Digitale Signatur
Grundlage: Asymmetrische Verschlüsselung
Alice
Bob
Original
Original
Encrypted
Bob‘s
Public Key
Encrypter
Bob‘s
Private Key
Decrypter
• 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
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
17 / x
Exkursion: Digitale Signatur
Signatur Erstellung
Alice
Message
Digest
Digester
Alices‘s
Private Key
Signed
Message
Bob
Encrypter
Signature
• Der Sender hängt einen mit seinem Private Key verschlüsselten Digest an die
Nachricht an.
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
18 / x
Exkursion: Digitale Signatur
Signatur Verifikation
Bob
Message
Message Integrity and
Authenticity Verification
Signature
failed
successful
Alices‘s
Public Key
Digester
Decrypter
yes
Computed
Digest
no
Equal?
Decrypted
Digest
• Der Empfänger verwendet den Public Key des Senders um den Digest zu
entschlüsseln und vergleicht diesen Wert mit dem selbst berechneten Digest.
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
19 / x
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...
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
20 / x
Exkursion: Digitale Signatur
Problem XML Signatur
• Herausfoderung XML Signatur:
 Syntaktisch äquivalente XML Dokumente können unterschiedliche Signaturen produzieren:
Signature
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
Signature
21 / x
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
Canonical
Form
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
c14n
22 / x
Exkursion: Digitale Signatur
XML Signatur und SAML Assertion
Assertion
Signature
SignedInfo
 SignedInfo: Was wurde wie signiert
CanonicalizationMethod
SignatureMethod
Reference  Assertion
Transforms
 Reference: Welches Element bzw.
Dokument wurde signiert
DigestMethod
DigestValue
SignatureValue
KeyInfo
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
 DigestValue: Digest des referenzierten
Elements (base64)
 SignatureValue: Verschlüsselter Digest
des SignedInfo Elements (base64)
 KeyInfo: Informationen über den
verwendeten Signatur-Schlüssel
23 / x
Exkursion: Digitale Signatur
XML Signatur - Beispiel
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
24 / x
Wie hilft Java bei der Lösung?
JAVA XML DIGITAL SIGNATURE API
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
25 / x
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
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
26 / x
Java XML Digital Signature API
Erzeugung einer XML Signatur (1/3)
Signature
SignedInfo
CanonicalizationMetho
SignatureMethod
Reference  Assertion
Transforms
DigestMethod
DigestValue
SignatureValue
KeyInfo
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
27 / x
Java XML Digital Signature API
Erzeugung einer XML Signatur (2/3)
Signature
SignedInfo
CanonicalizationMetho
SignatureMethod
Reference  Assertion
Transforms
DigestMethod
DigestValue
SignatureValue
KeyInfo
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
28 / x
Java XML Digital Signature API
Erzeugung einer XML Signatur (3/3)
Signature
SignedInfo
CanonicalizationMetho
SignatureMethod
Reference  Assertion
Transforms
DigestMethod
DigestValue
SignatureValue
KeyInfo
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
29 / x
Wie hilft Java bei der Lösung?
JAVA ARCHITECTURE FOR XML BINDING
(JAXB 2.X)
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
30 / x
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
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
31 / x
JAXB 2.x
Architektur
Compile-Zeit
Laufzeit
XMLDokument
XML-Schema
BindungsDeklarationen
SchemaGenerator
SchemaCompiler
JAXBAnnotationen
Unmarshal
Marshal
Binding-Framework
(JAXB-API)
Unmarshal
Marshal
obj ect Class Model
Assertion
Issuer
Java Beans
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
Signature
Java Beans
Instanzen
32 / x
JAXB 2.x
Schema-Compiler
• Der Schema-Compiler generiert aus einem XML Schema Java Klassen mit JAXBAnnotationen:
XML-Schemakomponente
Java-Komponente
Namespace
Package
oasis.names.tc.saml._2_0.assertion
Datentyp
Java-Klasse
Element
Instanz-Variable
...
...
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
33 / x
JAXB 2.x
Schema-Compiler
• Das Default-Verhalten des Schema-Compilers kann mit Bindungs-Deklarationen
überschrieben werden:
Package-Name überschreiben:
 Klassen-Name überschreiben:
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
34 / x
JAXB 2.x
Schema-Compiler mit Maven
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
35 / x
Lösungs-Beispiel
MYSAML
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
36 / x
MySaml
Architektur
class MySAML
SamlContextFactory
use
DefaultProperties
+
createSamlContext(Map) :SamlContext
create
SamlContext
create
+
create
create
AssertionBuilder
AssertionValidator
build(Map) :Document
+
create
validate(Document) :void
use
ResponseBuilder
+
09.05.2012
build(Map) :Document
Sicherheit in verteilten Systemen mit Java und SAML
ResponseExtractor
+
extractAssertion() :Document
37 / x
MySaml
API
<Demo>
https://github.com/groothues/mysaml
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
38 / x
Beispiel-Anwendungen
WS-SECURITY, SSO
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
39 / x
Beispiel-Anwendung
Web Service Security
cmp WS-Security Sample
«ws client»
soapUI
2. sende WS
Request mit
SAML
Assertion
«ws server»
TimeServ ice
«SOAPHandler»
SamlAuthenticator
«WebService»
Timer
1. hole SAML
Assertion
(manuell)
«tokenservice»
mySAML Sample
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
40 / x
Beispiel-Anwendung
Web Service Security – SOAP Request
soap:Envelope
soap:Header
wsse:Security
 WS-Security Core Specification
saml:Assertion
 WS-Security SAML Token Profile
http://www.oasisopen.org/committees/tc_home.php?wg_abbrev=wss
soap:Body
my:currentTime
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
/x
Beispiel-Anwendung
Web Service Security – Trust Relationship
w eb WS Security Sample Trust Relationship
«ws server»
TimeServ ice
«tokenservice»
mySAML Sample
trust
Key Store
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
Trust Store
42 / x
Beispiel-Anwendung
Web Service Security
<Demo>
https://github.com/groothues/mysaml
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
43 / x
Beispiel-Anwendung
Web Single Sign-On (SSO)
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
44 / x
Beispiel-Anwendung
Web Single Sign-On – Trust Relationship
w eb SSO Sample Trust Relationship
«Identity Provider»
Web Anw endung 1
«Service Provider»
Web Anw endung 2
trust
Trust Store
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
Key Store
45 / x
Beispiel-Anwendung
Web Single Sign-On (SSO)
<Demo>
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
46 / x
RESSOURCEN
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
47 / x
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_Rev70_Vol2b_FT_2010-08-10.pdf
• JAXB
http://jaxb.java.net/
• Java XML Digital 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/
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
48 / x
Vielen Dank für Ihre Aufmerksamkeit
09.05.2012
Sicherheit in verteilten Systemen mit Java und SAML
InterComponentWare AG
InterComponentWare Inc.
Altrottstraße 31 / Partner-Port
69190 Walldorf, Germany
Tel.: +49 (0) 6227 385 100
Fax: +49 (0) 6227 385 199
650 East Swedesford Road - Suite 180
Wayne, PA 19087, USA
Tel.: +1 610 947 6500
Fax: +1 610 947 6519
E-mail: [email protected]
E-mail: [email protected]
www.icw-global.com
www.icw-global.com
49 / x
Herunterladen